tsql - 仅选择第 1 条和第 10 条记录
问题描述
有一个包含 3 列的表:ID、签名和日期时间,它按具有计数 (*) > 9 的签名分组。
select * from (
select s.Signature
from #Sigs s
group by s.Signature
having count(*) > 9
) b
join #Sigs o
on o.Signature = b.Signature
order by o.Signature desc, o.DateTime
我现在只想根据签名选择第 1 条和第 10 条记录。决定排名的是日期时间降序。因此,我希望每个签名都有 2 行。
谢谢,
解决方案
我会使用几个常见的表表达式。
第一个将从表中选择所有记录以及每个签名的记录计数,第二个将从记录计数> 9的第一个中选择并添加按签名分区的 row_number - 然后仅从 row_number 的位置中选择是 1 或 10:
With cte1 AS
(
SELECT ID, Signature, Datetime, COUNT(*) OVER(PARTITION BY Signature) As NumberOfRows
FROM #Sigs
), cte2 AS
(
SELECT ID, Signature, Datetime, ROW_NUMBER() OVER(PARTITION BY Signature ORDER BY DateTime DESC) As Rn
FROM cte1
WHERE NumberOfRows > 9
)
SELECT ID, Signature, Datetime
FROM cte2
WHERE Rn IN (1, 10)
ORDER BY Signature desc
推荐阅读
- python - 为什么当我再次执行时,confusion_matrix 会有所不同?
- python - Python)如何将字符串转换为字典?(奇怪的字符串类型)
- sed - 根据上一行的模式将上一行与下一行连接起来
- google-sheets - 当存在多个日期条目时,每个日期的总条目数
- windows - bat文件是应用程序吗?
- c# - 在 Xaxis 中使用 DateTimeIntervalType.Seconds 在 MS 图表中显示工具提示的问题
- c# - 需要找到周转时间
- xslt - XSLT 1.0 中具有多个节点的嵌套分组
- c# - 使用 CookComputing.XmlRpc 读取方法声明
- python - 使用 Django 的考勤系统