2013-08-04 37 views
0

我有如下表:MySQL的 - 查詢 - DISTINCT與羣體之間的混合BY

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) 

但這不是足夠。我需要的數量,有多少項是在DB的每個小時(不重複) - 關於:

+---------------------+-------+ 
| 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) 

但它不」工作正常。命令計數所有行:/

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

這並不重要,如果在列時間戳值是2013年7月18日22:00:00或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

是的我錯過了一個獨特的..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