sql 查询以按过滤器统计记录
sql query to count records by filter
我有这个查询:
SELECT [ScheduleId]
,[EventId]
,s.[SkillId]
,[ADEmployeeId]
,sk.[Description]
FROM [Schedule] s
INNER JOIN [Skills] sk
ON s.SkillId = sk.SkillId
WHERE EventId = 1
这是输出:
我想要另一列来说明每个描述有多少职位可用(将计算具有相同描述的行),还有一列将计算有多少行具有相同描述的 ADEmployeeID .
在图片示例中,另外两列的数据应如下所示:
1 | 1
3 | 1
1 | 0
3 | 1
3 | 1
您需要 window 个功能:
SELECT [ScheduleId],[EventId], s.[SkillId], [ADEmployeeId], sk.[Description],
COUNT(*) OVER (PARTITION BY sk.Description) as col1,
COUNT(ADEmployeeId) OVER (PARTITION BY sk.Description) as col2
FROM [Schedule] s INNER JOIN
[Skills] sk
ON s.SkillId = sk.SkillId
WHERE EventId = 1;
我有这个查询:
SELECT [ScheduleId]
,[EventId]
,s.[SkillId]
,[ADEmployeeId]
,sk.[Description]
FROM [Schedule] s
INNER JOIN [Skills] sk
ON s.SkillId = sk.SkillId
WHERE EventId = 1
这是输出:
我想要另一列来说明每个描述有多少职位可用(将计算具有相同描述的行),还有一列将计算有多少行具有相同描述的 ADEmployeeID .
在图片示例中,另外两列的数据应如下所示:
1 | 1
3 | 1
1 | 0
3 | 1
3 | 1
您需要 window 个功能:
SELECT [ScheduleId],[EventId], s.[SkillId], [ADEmployeeId], sk.[Description],
COUNT(*) OVER (PARTITION BY sk.Description) as col1,
COUNT(ADEmployeeId) OVER (PARTITION BY sk.Description) as col2
FROM [Schedule] s INNER JOIN
[Skills] sk
ON s.SkillId = sk.SkillId
WHERE EventId = 1;