如何在MySQL中对指定日期对应的所有数值进行求和
该需求可以直接实现,可参考如下SQL语句:
注意事项
- 表中
date_sold为datetime类型,需要通过DATE()函数提取纯日期作为分组依据 total字段为varchar字符串类型,求和时需要先转换为数值类型,避免出现计算错误
MySQL 8.0+ 版本写法(支持窗口函数)
SELECT ROW_NUMBER() OVER (ORDER BY DATE(date_sold)) AS id, DATE(date_sold) AS `date`, SUM(CAST(total AS UNSIGNED)) AS total FROM trans GROUP BY DATE(date_sold) ORDER BY `date`;
MySQL 5.x 版本写法(兼容旧版本无窗口函数场景)
SELECT (@rowNum := @rowNum + 1) AS id, t.`date`, t.total FROM ( SELECT DATE(date_sold) AS `date`, SUM(CAST(total AS UNSIGNED)) AS total FROM trans GROUP BY DATE(date_sold) ORDER BY `date` ) AS t, (SELECT @rowNum := 0) AS init;
补充优化建议
如果total字段存储的都是数值类内容,建议将字段类型修改为INT或者DECIMAL类型,避免每次查询都做类型转换,同时也能避免非数值类脏数据导致的求和异常。
内容的提问来源于stack exchange,提问作者Riri
相关产品推荐
相关产品推荐

