如何选择列和计数(*)?在SQL中

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)

我尝试让那些正在聊天的用户,但我真的不知道如何计算

或类似的东西,我真的不知道在哪里放数(*)我知道如何计算一个选择获取我的行数,但我不知道如何将它作为另一列

gof*_*fr1 6

这样的事情应该为你做(有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)