2013-08-04 3 views
0

에 의해 DISTINCT와 GROUP 사이에 혼합 I 다음과 같은 테이블이 있습니다MySQL의 - 쿼리 -

SELECT * FROM tblTemp; 
+-----+---------------------+ 
| id | timestamp   | 
+-----+---------------------+ 
| 84 | 2013-07-18 22:36:32 | 
| 85 | 2013-07-18 22:36:33 | 
| 88 | 2013-07-18 22:36:33 | 
| 89 | 2013-07-18 22:36:34 | 
| 263 | 2013-08-04 16:01:05 | 
| 264 | 2013-08-04 16:01:11 | 
| 272 | 2013-08-04 16:01:42 | 
| 273 | 2013-08-04 16:01:42 | 
| 274 | 2013-08-04 16:01:42 | 
| 275 | 2013-08-04 16:21:25 | 
| 276 | 2013-08-04 16:21:25 | 
| 279 | 2013-08-04 16:21:26 | 
| 280 | 2013-08-04 16:21:27 | 
| 281 | 2013-08-04 16:21:27 | 
+-----+---------------------+ 
14 rows in set (0.00 sec) 

먼저 내가이

SELECT DISTINCT timestamp FROM tblTemp; 
+---------------------+ 
| timestamp   | 
+---------------------+ 
| 2013-07-18 22:36:32 | 
| 2013-07-18 22:36:33 | 
| 2013-07-18 22:36:34 | 
| 2013-08-04 16:01:05 | 
| 2013-08-04 16:01:11 | 
| 2013-08-04 16:01:42 | 
| 2013-08-04 16:21:25 | 
| 2013-08-04 16:21:26 | 
| 2013-08-04 16:21:27 | 
+---------------------+ 
9 rows in set (0.00 sec) 

처럼 뷰에있는 모든 더블 타임 스탬프를 제거하려는하지만이 아니다 충분히.

+---------------------+-------+ 
| timestamp   | count | 
+---------------------+-------+ 
| 2013-07-18 22:00:00 | 3  | 
| 2013-08-04 16:00:00 | 6  | 
+---------------------+-------| 

먼저 내가 다음 명령을 사용할 수 있습니다 생각 : :

SELECT timestamp, COUNT(id) FROM tblTemp GROUP BY YEAR(timestamp), MONTH(timestamp), DAY(timestamp), HOUR(timestamp) 

을하지만 '아무튼 이것에 대해 - 나는 (복식없이) DB에 각 시간 얼마나 많은 항목 수를 필요 잘 작동합니다. 명령 카운트 모든 행/

+---------------------+-------+ 
| timestamp   | count | 
+---------------------+-------+ 
| 2013-07-18 22:36:32 |  4 | 
| 2013-08-04 16:01:05 | 10 | 
+---------------------+-------+ 

그것은이다 중요하지, 열 타임 스탬프의 값은 2013년 7월 18일 22시 0분 0초 또는 2013년 7월 18일 22시 36분 32초 또는 다른 어떤 경우 시간과 날짜가 식별 가능한 한.

감사합니다 :)

답변

0

어쩌면이 같은 (날짜 형식 문자열을 확인해야 할 수도 있습니다)이

SELECT DATE_FORMAT(timestamp,'%m/%d/%Y %H') timestamp, COUNT(id) 
FROM tblTemp 
GROUP BY DATE_FORMAT(timestamp,'%m/%d/%Y %H') 
+0

중복 된'timestamp' 값을 제거하지 않습니다 –

+0

http://sqlfiddle.com/#!2/3756b/12 –

+0

참으로 나는 distinct..thnx가 없습니다. –

0
select DATE_FORMAT(`timestamp`, '%Y-%m-%d %H'), count(*) 
from (select distinct `timestamp` from Table1) abc 
group by DATE_FORMAT(`timestamp`, '%Y-%m-%d %H'); 

fiddle