【疑惑求解】不能对包含聚合或子查询的表达式执行聚合函数。
表信息:
表A
用户ID 用户名 上线用户(用户名)
111 AAA null
222 BBB AAA
333 CCC AAA
444 DDD null
表B
用户ID 在线时间(s)
111 2323
111 2323
222 5656
222 5656
333 782
333 656
444 569
444 856
查询结果:所有上线用户信息
用户ID 用户名 下线用户数 下线用户在线时间5000s以上人数
查询语句:
select b.upname,a.id,
count(b.id) 总下线人数,
count(case when sum(m.onlinetime) > 5000 then m.id end)
from tableA b
left join tableA a
on b.upname = a.name
left join tableB m
on b.id = m.id
where b.upname is not null
group by b.upname,a.id
错误:
第3行 不能对包含聚合或子查询的表达式执行聚合函数。
求大神指教 聚合函数 子查询
[解决办法]
select b.upname,a.id,count(b.id) 总下线人数,
count(case when m.onlinetime > 5000 then m.id end)
from tableA b
left join tableA a on b.upname = a.name
left join (select id,SUM(onlinetime) as onlinetime from tableB group by id) m on b.id = m.id
where b.upname is not null
group by b.upname,a.id