写出了一条有点难度的sql语句。

表结构如下

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),问题解决了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值