有两张表:
一张表是:login_table ,表的字段有user_id和login_time
另一张表是:pay_table,表字段有user_id,pay_time,pay_num
现在要求用一条sql 写出登录总次数 总登录人数 登录未支付的人数。
注意事项:
在我们对user_id进行group by之后,再求count(*),它所求的是分组内个数,
例如最后的结果会是:
user_id count(*)
1001 2
1002 3
1003 5
思路:
分别写三个子查询来查询这款id内容,最后再做join
select
t1.login_people,
t2.login_count,
t3.noPay_count
from
(select
user_id,
count(*) login_people
from
login_table
group by user_id
)t1 join
(select
user_id,
login_time,
count(*) login_count
from
group by user_id,login_time
)t2
on t1.user_id=t2.user_id
join
(select
user_id,
count(*) noPay_count
from pay_table pt
group by user_id
having pay_num=0)t3
on t2.user_id=t3.user_id;