MySQL-mysql 这个统计表怎么做
有一张表 tables ,
id,customers(客户),Atime(A部门跟进时间),Btime(B部门跟进时间)
Atime和Btime 是unix时间戳,为了表述清楚,写了中文时间
现在A部门要做一个统计,统计7月份的数据,Atime 做分组显示7月份每一天的 A部门跟进人数和B部门跟进人数,SQL如下
SELECT Atime,
,SUM(case when Atime > 1404144020 and Atime < 1406822360 then 1 else 0 end) as a_count,
SUM(case when Btime > 1404144020 and Btime < 1406822360 then 1 else 0 end) AS b_count,
WHERE (Atime > 1404144020 and Atime < 1406822360) OR (Btime > 1404144020 and Btime < 1406822360)
GROUP BY FROM_UNIXTIME(Atime, '%Y%m%d')
ORDER BY FROM_UNIXTIME(Atime, '%Y%m%d')
但是,如果这样查的话,会把6月份的显示出来,结果也不对,该怎么做?
表的数据如下
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
因为你用的是or呀:
OR (Btime > 1404144020 and Btime < 1406822360)
Btime是7月的里面,有Atime是6月的.
不太清楚你的逻辑到底是什么,如果按Atime统计7月的不需要加Btime的条件,如果要求Btime也在七月 就用and连接
select A.Aday, A.Acount, B.Bcount
from
(select FROM_UNIXTIME(Atime, '%Y%m%d') Aday, count(*) Acount
from table1
WHERE Atime > 1404144020 and Atime < 1406822360
group by Aday) A,
(select FROM_UNIXTIME(Btime, '%Y%m%d') Bday, count(*) Bcount
from table1
WHERE Btime > 1404144020 and Btime < 1406822360
group by Bday) B
where A.Aday = B.Bday
没实际测, 试一下吧.