sql - 分组依据,连续不止一次
问题描述
我想找到我连续多次出现的所有记录。
样本数据:
NAME
----
B
B
B
C
C
A
C
A
A
结果:
NAME COUNT
---- ----
B 3
C 2
A 2
解决方案
如问题下的评论中所述,您需要一个额外的列来执行此操作;如果你不这样做,这是不可能的。尽管您可以执行以下操作,但您可以使用附加的始终升序的列:
CREATE TABLE #T (ID int, [Name] char(1));
INSERT INTO #T
VALUES(1,'B'),
(2,'B'),
(3,'B'),
(4,'C'),
(5,'C'),
(6,'A'),
(7,'C'),
(8,'A'),
(9,'A');
GO
WITH Grps AS(
SELECT [Name],
ROW_NUMBER() OVER (ORDER BY ID) -
ROW_NUMBER() OVER (PARTITION BY [Name] ORDER BY ID) AS Grp
FROM #T)
SELECT [Name],
COUNT([Name]) AS [Count]
FROM Grps
GROUP BY [Name],
Grp
HAVING COUNT([Name]) >= 2
ORDER BY [Count] DESC,
Grp DESC;
GO
DROP TABLE #T;
推荐阅读
- spring - Should repositories in Spring Boot applications be tested directly?
- powershell - 在 PowerShell 中使用 import-Csv 时获取值的子字符串
- json - 将模型中的 DateTime 对象格式化为 NotMapped 属性
- python - image = vision_client.image( AttributeError: 'ImageAnnotatorClient' 对象没有属性 'image'
- r - 以宽数据格式创建新变量,R
- python-3.x - pdf2text 与 Python 3.7 版本不兼容
- reactjs - 如何更新 Redux 中的模拟商店以测试生成的数量
- s 在组件中?
- mobx - mobx 的超时时间是什么时候?
- r - 替换有 [x] 行,使用 scale_color_manual 时数据有 [y]
- vuejs2 - 如何在 Vue 中初始化组件的根 dom 元素