按小时分组mysql 补齐_分组记录按小时或按天白天和mysql的
生成單列dates_hours表,該表包含在合理范圍內(例如從1900到2200)的所有日期和小時數。 然后從此表執行LEFT JOIN到您當前的查詢。
對于這種技術要正確執行,你可能需要對索引列添加到您的表,它包含轉換后的時間戳(你copied_timestamp轉換為DATETIME,四舍五入到小時)
SELECT date_hour, count(req.converted_timestamp)
FROM
dates_hours
LEFT JOIN req ON req.converted_timestamp = dates_hours.date_hour
WHERE date_hour
BETWEEN (SELECT MIN(req.converted_timestamp) FROM req)
AND (SELECT MAX(req.converted_timestamp) FROM req)
GROUP BY date_hour
要生成在dates_hours表:
CREATE TABLE dates_hours (date_hour DATETIME PRIMARY KEY);
DELIMITER $$$
CREATE PROCEDURE generate_dates_hours (to_date DATETIME)
BEGIN
DECLARE start_date DATETIME;
DECLARE inc INT;
SELECT MAX(date_hour) INTO start_date FROM dates_hours;
IF start_date IS NULL THEN
SET start_date = '1900-01-01';
END IF;
SET inc = 1;
WHILE start_date + INTERVAL inc HOUR <= to_date DO
INSERT INTO dates_hours VALUE (start_date + INTERVAL inc HOUR);
SET inc = inc +1;
END WHILE;
END $$$
DELIMITER ;
CALL generate_dates_hours('2200-01-01');
好了,現在我校對我自己,我意識到這是很牽強的解決方案。我希望有人提出一個更優雅的。
總結
以上是生活随笔為你收集整理的按小时分组mysql 补齐_分组记录按小时或按天白天和mysql的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 楚乔传羽姑娘是什么人身份揭秘 仲羽结局被
- 下一篇: 南京治疗卵巢功能减退最好的医院推荐