来自实例的SQL查询计数

Ice*_*man 3 sql sql-server

我有一张包含公共汽车和学生注册信息的表格:

CREATE TABLE [dbo].[BusSignupInstance](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [StudentId] [int] NOT NULL,
    [BusId] [int] NOT NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

以下是一些示例数据:

Id  StudentId   BusId
1   1   1
2   2   1
3   3   1
4   1   2
5   4   2
6   1   3
7   5   3
Run Code Online (Sandbox Code Playgroud)

我想要总线ID的总数.在这种情况下将是:

BusId    Num of Students
1      2 (student id 2, 3)
2      1 (student id 4)
3      2 (student id 1, 5)
Run Code Online (Sandbox Code Playgroud)

结果是根据注册的顺序,如果学生1注册三次,只有最后一次有效.

Qua*_*noi 6

SELECT  busId, COUNT(*)
FROM    (
        SELECT  busId, studentId,
                ROW_NUMBER() OVER (PARTITION BY studentId ORDER BY id DESC) rn
        FROM    busSignupInstance
        ) q
WHERE   rn = 1
GROUP BY
        busId
Run Code Online (Sandbox Code Playgroud)