我有如下表: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秒或其他任何只要時間和日期是可識別的。
謝謝:)
這不會刪除重複的'timestamp'值 –
http://sqlfiddle.com/#!2/3756b/12 –
是的我錯過了一個獨特的..thnx –