为了账号安全,请及时绑定邮箱和手机立即绑定

请大牛帮我看看这个SQL如何实现!

请大牛帮我看看这个SQL如何实现!

慕勒3428872 2019-03-01 10:34:49
业务场景是这样的: 前台提交数据到后台,后台做统计的时候,要根据每天去统计当天业务数量,想要的效果如下: 比如像查询最近30天内的数据,数据形式是这样的: 天:数目 01:32 02:23 03:0(如果当天没有业务,则为0) ... 30:32 现在问题是,如果当天没有业务产生,那么当天的日期是肯定没有的。如何通过sql查询出来一个如上 例子中的那样,如果当天没有业务,则自动将当天的业务置为0,这个用sql如何实现?在代码层很容易 实现问题是如何通过sql一次查询出来一个完整的结果
查看完整描述

5 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

建议从代码层面去解决。我之前和你有过同样的需求,后来还是放弃了。毕竟数据库不太适合做逻辑层面上的事情。
大可不必非要追求一条SQL解决问题。

可能对你的问题,没有什么实质性帮助。一点点经验之谈

查看完整回答
反对 回复 2019-03-01
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

按日期中的天分组,用sum聚合。但是你这个当天的日期没有有点膈应啊

查看完整回答
反对 回复 2019-03-01
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

我在好几个类似问题里面给过这种构造连续日期的sql了,找一个30条以上记录的表,这里是tt:

select @rn:=case when @rn<9 then concat('0',@rn+1) else @rn+1 end rn 
from tt,(select @rn:=0) a limit 30;

剩下的就是你自己去join,group by,sum/count去吧

查看完整回答
反对 回复 2019-03-01
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

1楼正解,前段时间也有这么一个需求,sql语句中尽量少用函数,不是真的“没有什么不是一条sql语句不能解决的,有就两条”;也算是对数据库优化的一种形式吧

查看完整回答
反对 回复 2019-03-01
  • 5 回答
  • 0 关注
  • 427 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信