【发布时间】:2013-08-04 16:31:40
【问题描述】:
我有下表:
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)
但它不能正常工作。该命令计算所有行数:/
+---------------------+-------+
| timestamp | count |
+---------------------+-------+
| 2013-07-18 22:36:32 | 4 |
| 2013-08-04 16:01:05 | 10 |
+---------------------+-------+
只要时间和日期可识别,列时间戳中的值是否为 2013-07-18 22:00:00 或 2013-07-18 22:36:32 或其他任何值都不重要。
谢谢:)
【问题讨论】:
标签: mysql sql group-by distinct