2017-06-02 139 views
0

我想弄清楚如何按小時與以下數據集進行排序。Mysql按時間排序(小時)

hm,total_count,avg_count,max_count 
------------------------------------- 
'23:15','17','5.6667','9' 
'23:45','19','3.1667','5' 
'06:15','13','6.5000','9' 
'05:15','22','4.4000','7' 
'05:45','12','6.0000','11' 
'04:15','22','4.4000','6' 
'04:45','14','4.6667','7' 
'03:45','24','2.4000','5' 
'02:45','82','5.4667','13' 
'01:45','98','6.1250','13' 
'00:45','59','4.2143','11' 

我的查詢:

SELECT DATE_FORMAT(`dt`, '%H:%i') as hm, SUM(`counts`) AS total_count, 
     AVG(`counts`) AS avg_count, MAX(`counts`) AS max_count 
FROM pax_load_distribution , plans 
WHERE `pax_load_distribution`.`plan_id` = `plans`.`id` AND 
     `plans`.`dt` BETWEEN '2017-05-01' AND '2017-05-31' 
GROUP BY hm 
ORDER BY HOUR(hm) DESC, MINUTE(hm) ASC; 

但正如你所看到的,查詢組織之上的23個小時,但不是在一個序列從23,00,01,02等。如何使它使得23小時最接近00,01等。

+0

'dt'是否跨越多天? –

+0

是的,它跨越一個月的時間並收集小時。 –

回答

0

嘗試在您的ORDER BY子句中使用HOUR(dt + INTERVAL 1 HOUR)而不是HOUR(hm) DESC

+0

不幸的是,它沒有工作:( –

+0

@ShawnAng,對不起。請用'dt'試試。我已經提出了答案。 – Alexander

+0

太棒了!它的工作原理! –

0

您可以嘗試:ORDER BY (HUOUR(hm) * 60 + MINUTE(hm)) ASC

+0

首先,我認爲你有一個錯字在你的HUOUR。這個代碼片段可以解決這個問題,[包括解釋](https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高你的文章的質量。您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 –