sql-server - MSSql 仅对计数大于 3 的记录进行分组并返回其余记录

标签 sql-server group-by conditional-statements

我想对计数大于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

Demo

关于sql-server - MSSql 仅对计数大于 3 的记录进行分组并返回其余记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26854070/

相关文章:

mysql - SQL group by week的一些问题

c# - Linq2SQL : Select only some columns, 但仍然可以提交更改

sql - 在 SQL Server 中执行日期/时间减法

mysql - Group Concat 两列,但在 GROUPS 中——涉及三个分隔符

MySql GROUP BY 和 ORDER BY 重复数据删除

jQuery条件: if div has a particular ID,将类添加到另一个div

javascript - 使用 JavaScript 收集用户输入以进行计算

javascript - 简化if语句条件

sql - 一个更好的查询来查找部门中薪水最高的员工列表?

php 无法连接到 sql server 2008(使用 pdo dblib)