表结构如下
a 表
网站webid,网站名称webname
b 表
用户userid,所属网站webid,注册时间regtime
要求:统计各个网站某天(yyyy-MM-dd)内用户注册数量
咋一看:很简单 select a.id,a.name ,count(*) as regnumber from a inner jion b on a.webid=b.webid
where datediff(d,b.regtime,'yyyy-MM-dd')=0 group by a.id,a.name
但是事情没有那么简单,如 果某网站在这一天没有用户注册,那么该网站不会被列出来,
所以要使用左连接:
select a.id,a.name ,count(*) as regnumber from a LEFT OUTER JOIN b on a.webid =b.webid
where datediff(d,b.regtime,'yyyy-MM-dd')=0 group by a.id,a.name
问题出现了,某行数据如果没有用户注册的情况下 count(*)得到的结果应该是0,但却总是显示为1
最后把count(*) 改为count(b.userid),问题解决了!
本文介绍了一种使用SQL统计特定日期各网站注册用户数的方法。通过对比内连接与左连接的效果,解决了一个常见问题:如何正确地统计某一天内即使没有新增用户的网站也能在结果中显示。
4万+

被折叠的 条评论
为什么被折叠?



