如何在SQL中按日、月、年分组汇总数值?现有尝试未达预期
按日期(天)汇总value值的SQL解决方案
你的代码问题在于使用MONTH(time)分组,这会把同一个月内所有日期的记录合并到一起,而非按天分组。要实现按天汇总,需要提取日期的年月日部分来分组和展示。
根据你使用的数据库类型,以下是对应的解决方案:
MySQL/MariaDB
SELECT DATE(time) AS 日期, SUM(value) AS 当日总value FROM item0364 GROUP BY DATE(time) ORDER BY 日期;
PostgreSQL
SELECT CAST(time AS DATE) AS 日期, SUM(value) AS 当日总value FROM item0364 GROUP BY CAST(time AS DATE) ORDER BY 日期; -- 也可以用DATE(time),效果一致
SQL Server
SELECT CAST(time AS DATE) AS 日期, SUM(value) AS 当日总value FROM item0364 GROUP BY CAST(time AS DATE) ORDER BY 日期; -- 也可以用CONVERT(date, time)替代CAST
Oracle
SELECT TRUNC(time, 'DD') AS 日期, SUM(value) AS 当日总value FROM item0364 GROUP BY TRUNC(time, 'DD') ORDER BY 日期;
补充说明
如果你的time字段存储的是字符串类型(而非日期时间类型),需要先转换为日期类型再提取日期部分。以MySQL为例:
SELECT DATE(STR_TO_DATE(time, '%Y-%m-%d %H:%i:%s.%f')) AS 日期, SUM(value) AS 当日总value FROM item0364 GROUP BY DATE(STR_TO_DATE(time, '%Y-%m-%d %H:%i:%s.%f')) ORDER BY 日期;
内容的提问来源于stack exchange,提问作者user15392941
相关产品推荐
相关产品推荐

