MySQL-mysql 这个统计表怎么做

发布于 2016-10-24 02:11:55 字数 779 浏览 1187 评论 2

有一张表 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归属感 2017-10-15 15:26:57

因为你用的是or呀:

OR (Btime > 1404144020 and Btime < 1406822360)

Btime是7月的里面,有Atime是6月的.

不太清楚你的逻辑到底是什么,如果按Atime统计7月的不需要加Btime的条件,如果要求Btime也在七月 就用and连接

晚风撩人 2017-04-29 11:31:19

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

没实际测, 试一下吧.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文