【发布时间】:2022-01-11 06:22:30
【问题描述】:
我开始学习 row_number() 和 over() 分区,我在这个网站上遇到了一个叫做间隙和岛屿的东西......我正在努力理解这一切。
我的数据表:
| Step Number | Status |
|---|---|
| 1 | Passed |
| 2 | Passed |
| 3 | Passed |
| 4 | Passed |
| 5 | Failed |
| 6 | Failed |
| 7 | Failed |
| 8 | Failed |
| 9 | Failed |
| 10 | Passed |
| 11 | Passed |
| 12 | Passed |
我想要得到的结果:
| Order | Status | Consecutive Counts |
|---|---|---|
| 1 | Passed | 4 |
| 2 | Failed | 5 |
| 3 | Passed | 3 |
这是我所知道的。第一个“通过”没有出现在记录集中,我找不到在哪里放置 COUNT() 或任何函数来获取分区中的行数。
SELECT
ROW_NUMBER() OVER(ORDER BY Status) AS 'Order', Status
FROM (
SELECT *, Steppy = row_number() over (partition by [Status] order by [StepNumber] desc)
FROM Q1
) A
GROUP BY Status
结果:
| Order | Status |
|---|---|
| 1 | Failed |
| 2 | Passed |
【问题讨论】:
标签: sql sql-server tsql window-functions