日期:2014-05-16  浏览次数:21284 次

sql 分组计数
假设我现在有3张表

uesr表
userid,username,groupid
1,张三,a组
2,王五,a组
3,李四,a组
4,琉璃,b组
5,鱼鱼,c组
6,卡卡,c组

group表
groupid groupname
01,a组
02,b组
03,c组

auth表
authid,authvalue,type
001,01, 00群组
002, 02,00群组
003, 3, 01人员
004,03, 00群组

我现在想获得的结果为
authid,type,authvalue,groupname, userid, count
001, 00群组,01, a组, 1, 3
001, 00群组,01, a组, 2, 3
001, 00群组,01, a组, 3, 3
002, 00群组,02, b组, 4, 1
004, 00群组,03, c组, 5, 2
004, 00群组,03, c组, 6, 2

我是这样写的

select authid,type,authvalue,groupname,userid
from auth
left join group on auth.authvalue=group.groupid
left join user on group.id=user.groupid
where type='00群组'

但是我不知道如何能够把count列加上去,就是我想知道在同一个authid下的群组中有多少个人


------解决方案--------------------
select authid,type,authvalue,groupname,userid,count(1) over(partition by authvalue)
from auth
left join group on auth.authvalue=group.groupid
left join user on group.id=user.groupid
where type='00群组'