假设我现在有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下的群组中有多少个人

解决方案 »

  1.   

    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群组'
      

  2.   

    谢谢,可用因为实际数据库有大量重复数据
    我稍微改成
    select authid,type,authvalue,groupname,userid,count(distinct userid) 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群组'