簡體   English   中英

MySQL的。 如何選擇每小時的最后日期

[英]mysql. How to select the last date for each hour

我在mysql數據庫中有股市數據。 我想找到每小時的收盤價。

我想出了這個查詢:

SELECT MAX(date), price, FROM tradetable WHERE date BETWEEN '2014-01-25 23:00:00' AND '2014-01-28 12:59:59' GROUP BY hour(date) ORDER BY date;

但是,我的結果未按日期正確排序。 混亂了。 時間和日期不整齊。

我究竟做錯了什么?

返回的數據:

2014-01-27 02:59:59 --- 815.37000
2014-01-27 03:59:59 --- 813.00000
2014-01-27 04:59:59 --- 808.59998
2014-01-27 05:59:59 --- 812.07001
2014-01-27 06:59:59 --- 816.00000
2014-01-27 07:59:59 --- 825.84998
2014-01-27 08:59:59 --- 824.00000
2014-01-27 09:59:59 --- 825.50000
2014-01-27 10:59:59 --- 828.91998
2014-01-27 11:59:59 --- 820.00000
2014-01-27 12:59:59 --- 816.90002
2014-01-27 13:59:59 --- 821.20001
2014-01-26 14:59:59 --- 822.88000
2014-01-26 15:59:59 --- 819.00000
2014-01-26 16:59:59 --- 817.79999
2014-01-26 17:59:59 --- 817.78003
2014-01-26 18:59:59 --- 819.98999
2014-01-26 19:59:59 --- 816.66998
2014-01-26 20:59:59 --- 822.15997
2014-01-26 21:59:59 --- 819.52002
2014-01-26 22:59:59 --- 820.00000
2014-01-26 23:59:59 --- 816.00000
2014-01-27 00:59:59 --- 825.39001
2014-01-27 01:59:59 --- 821.90002

采用:

GROUP BY DATE(date), HOUR(date)

您正在合並同一組中不同日期的時間。

SELECT MAX(date), price, FROM tradetable WHERE date BETWEEN '2014-01-25 23:00:00' AND '2014-01-28 12:59:59' 
GROUP BY hour(date) ORDER BY date, time DESC

您需要按日期和小時選擇max(date)組,然后將該結果與tradetable結合起來以獲取每小時的價格。

SELECT T1.date,T1.price
FROM tradetable T1
INNER JOIN
    (SELECT DATE(date) as tradedate,
            HOUR(date) as tradehour,
            MAX(date) as maxtime
     FROM tradetable
     WHERE date BETWEEN '2014-01-25 23:00:00' AND '2014-01-28 12:59:59'
     GROUP BY tradedate,tradehour
    )T2 
ON T1.date = T2.maxtime
ORDER BY T1.date

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM