我想对计数大于3的键进行分组,查询也会返回其余的记录。我不想使用 Union All,还有其他方法吗?
ID
1
1
1
2
3
3
4
4
4
4
返回
1
1
1
2
3
3
4
最佳答案
您可以使用ranking- and aggregate functions :
WITH CTE AS
(
SELECT ID,
CNT = COUNT(*) OVER (PARTITION BY ID),
RN = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID)
FROM dbo.TableName
)
SELECT ID
FROM CTE
WHERE CNT <= 3 OR RN = 1
关于sql-server - MSSql 仅对计数大于 3 的记录进行分组并返回其余记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26854070/