[英]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.