2012-09-05 40 views
1

我每遇到一個小時都會遇到記錄計數問題。計算每一小時插入表中的行數

我的表結構

CREATE TABLE `statistics` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 
    `uuid` VARCHAR(100) NULL DEFAULT NULL, 
    `type_id` VARCHAR(50) NULL DEFAULT NULL, 
    `in_time` TIMESTAMP NULL DEFAULT NULL, 
    `out_time` TIMESTAMP NULL DEFAULT NULL, 
    `error_id` INT(10) UNSIGNED ZEROFILL NULL DEFAULT NULL, 
    `status` TINYINT(4) UNSIGNED NULL DEFAULT NULL, 
    `last_updated` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`) 
) 
ENGINE=MyISAM 
AUTO_INCREMENT=1594; 

我想這樣的查詢:

SELECT FLOOR(TIME_TO_SEC(TIMEDIFF(NOW(), last_updated))/3600) HOURS,COUNT(*),error_id FROM statistics WHERE last_updated > DATE_SUB(NOW(), INTERVAL 24 HOUR) GROUP BY HOUR(last_updated) and error_id != 0 ORDER BY last_updated DESC; 

輸出是這樣

+-------+----------+ 
| HOURS | COUNT(*) | 
+-------+----------+ 
|  1 |  205 | 
|  2 |  70 | 
|  3 |  14 | 
|  4 |  10 | 
|  5 |  16 | 
|  7 |  29 | 
|  8 |  412 | 
|  9 |  65 | 
| 10 |  79 | 
| 11 |  149 | 
| 12 |  317 | 
| 13 |  306 | 
| 14 |  356 | 
| 15 |  597 | 
| 16 |  433 | 
| 17 |  186 | 
| 18 |  527 | 
| 19 |  349 | 
| 20 |  397 | 
| 21 |  480 | 
| 22 |  460 | 
| 23 |  526 | 
| 23 |  411 | 
+-------+----------+ 

,但它是不正確的。因爲同一小時(23)是不同的計數。 在此先感謝。 FLOOR(TIME_TO_SEC(TIMEDIFF(NOW(), last_updated))/3600)

目前,你計算的一件事,但另一個分組:即 -

回答

1

你可以通過你正在計算同樣的事情需要組。