Luc*_*ujo 3 sql-server select count
我有这样的表:
用户(idUser,nameUser等)
聊天(idChat,txtChat)
成员(idUser,idChat)
我必须选择User中的所有列以及有多少组聊天(超过2个成员)是用户以及有多少常规聊天(两个成员).
我的第一个想法是做两个或更多选择并使用一个联盟,但它浏览它不是那样的工作.
我试过这样的事
select *
from User
where idUser in (select idUser
from Members)
Run Code Online (Sandbox Code Playgroud)
我尝试让那些正在聊天的用户,但我真的不知道如何计算
或类似的东西,我真的不知道在哪里放数(*)我知道如何计算一个选择获取我的行数,但我不知道如何将它作为另一列
这样的事情应该为你做(有GROUP BY):
SELECT u.idUser,
u.nameUser,
COUNT(DISTINCT m.idChat) as countChats
FROM [User] u
LEFT JOIN Members m
ON u.idUser = m.idUser
GROUP BY u.idUser, u.nameUser
Run Code Online (Sandbox Code Playgroud)
或者 PARTITION BY
SELECT DISTINCT
u.idUser,
u.nameUser,
COUNT(m.idChat) OVER (PARTITION BY nameUser) as countChats
FROM [User] u
LEFT JOIN Members m
ON u.idUser = m.idUser
Run Code Online (Sandbox Code Playgroud)