0
我有這個查詢來執行日內數據彙總到日常數據(感謝Gordon Linoff)。每週和日內數據彙總
我存儲股票市場數據每行1分鐘,我有511 1分鐘的行每天(從0900到1730)。我使用MySQL 5.6.11 VERS
數據是如下
SELECT symbol, date, MAX(high) AS high, MIN(low) as low, SUM(volume) as volume,
(select open from a2a a2 where a1.symbol = a2.symbol and a1.date = a2.date order by time limit 1) as open,
(select close from a2a a2 where a1.symbol = a2.symbol and a1.date = a2.date order by time desc limit 1) as close
FROM a2a a1
GROUP BY symbol, date
ORDER BY symbol, date;
我的問題圖片:
1)如何修改這個查詢,如果我需要彙總數據只獲得最後100個每日酒吧?
2)如何將數據彙總到每週或彙總成5分鐘的數據?
編輯:每週彙總此版本的作品(和每月聚集過多使用一個月,而不是周)
SELECT symbol, date, week(date), MAX(high) AS high, MIN(low) as low, SUM(volume) as volume,
(select open from a2a a2 where a1.symbol = a2.symbol and week(a1.date) = week(a2.date) order by time limit 1) as open,
(select close from a2a a2 where a1.symbol = a2.symbol and week(a1.date) = week(a2.date) order by time desc limit 1) as close
FROM a2a a1
WHERE date >= date_sub(CURDATE(), interval 100 week)
GROUP BY symbol, week(date)
ORDER BY symbol, date;
我還有東西要進行修改:
1)關於日常聚集第一查詢會返回100個日曆日,而不是100個每日聚合行。我需要從最近的後退開始對100條記錄進行排序。我每週需要100條記錄才能進行每週聚合。
2)5分鐘或n分鐘聚合?例如,聚合從0900到0904,然後從0905到0909等5分鐘聚合
是的我的意思是最後100天;執行你的查詢我得到這個錯誤 錯誤代碼1064,SQL狀態42000:你的SQL語法有錯誤;檢查對應於您的MySQL服務器版本的手冊,以便在'' GROUP BY符號,日期 ORDER BY符號,日期'在第5行 行1列1 –
@Albertoacepsut附近使用正確的語法。 。 。正確的函數是'date_sub()',而不是'datesub()'。 –
@Gordon ...那麼第一個查詢現在完美運行,我只在限制100中更改;而不是WHERE date> = date_sub(CURDATE(),間隔100天),以獲得每日100個聚合行。我在第二個查詢時收到錯誤錯誤代碼1630,SQL狀態42000:FUNCTION a1.week不存在。檢查參考手冊 第1行第1列 –