MySQL如何按天统计数据,没有记录的天自动补充0
2018-02-26 00:00
417 查看
摘要: 在不尽少的减少对数据库设计进行干扰的情况下(增加0记录、创建函数、使用临时表等),通过修改SQL语句实现没有的天用0填充
思路:
1. 通过该语句可以实现指定日期到当前日期的日期列表数据,并用0填充要统计的sum字段
2. 要统计的SQL语句,如:
3. 合并两个结果集,并保证字段相同。完整代码如下:
以上SQL未考虑性能问题,在实际使用中慎重考虑
思路:
1. 通过该语句可以实现指定日期到当前日期的日期列表数据,并用0填充要统计的sum字段
SELECT @cdate := date_add(@cdate,interval - 1 day) `date` , 0 as `sum` from (SELECT @cdate :=date_add(CURDATE(),interval + 1 day) from <任意有数据表名>) t1 where @cdate > '2017-08-03'
2. 要统计的SQL语句,如:
select DATE_FORMAT(createTime,'%Y-%m-%d') as `date`,sum(money) from payTable group by `date`
3. 合并两个结果集,并保证字段相同。完整代码如下:
select `date` ,max(`sum`) as `sum` from
(
SELECT @cdate := date_add(@cdate,interval - 1 day) `date` , 0 as `sum` from (SELECT @cdate :=date_add(CURDATE(),interval + 1 day) from <任意有数据表名>) t1 where @cdate > '2017-08-03'
union all
select DATE_FORMAT(createTime,'%Y-%m-%d') as `date`,sum(money) from payTable group by `date`
) _tmpAllTable
group by `date`
以上SQL未考虑性能问题,在实际使用中慎重考虑
相关文章推荐
- mysql删除数据记录后如何使自动编号从1开始
- Mysql的timestamp类型,自动记录数据的更新时间
- 如何判断mysql中数据表中两个列之间的相同记录和不同记录
- mysql 分组查询数据时,如何获得用于分页的总记录数?
- mysql insert语句后如何获取insert数据的主键值自动编号
- 重装MySQL后如何恢复没有备份的早先数据
- Mysql的timestamp类型,自动记录数据的更新时间
- thinkPHP后台查询mySQL中数据时,当没有符合条件的记录count结果集的值为1
- [MySQL] 行列转换变化各种方法实现总结(行变列报表统计、列变行数据记录统计等)
- MySQL Help 答朋友问:5000W记录的Innodb表如何快速的去重复数据
- [MySQL] 行列转换变化各种方法实现总结(行变列报表统计、列变行数据记录统计等
- MySql如何分级查询上千万行记录的表,并将该大数据显示到界面中
- MySQL Help 答朋友问:5000W记录的Innodb表如何快速的去重复数据
- mysql如何把查询到的数据加上一个自动编号字段
- 表A中的记录随时变化,程序显示A数据的界面中如何自动也跟着刷新?
- 程序猿(媛)Shell脚本必备技能之一: 在Linux下如何自动备份mysql数据
- 上千万或亿条数据量,如何统计出重复记录最多的前N条
- mysql 分组查询数据时,如何获得用于分页的总记录数?
- mysql 插入多条数据如何使用INSERT插入多条记录
- 添加数据记录成功后,如何自动显示该条记录于DBGrid中?