sqlserver分组排序并取出每组中的第一条数据
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sqlserver分组排序并取出每组中的第⼀条数据
使⽤SQL Server数据库在【分组排序并取出每组中的第⼀条数据】的场景下,很容易想到的是使⽤GROUP BY分组⼦句配合聚合函数。
举个简单的例⼦,有⼀个YANGGBS表,表中有NAME和AGE两个字段,要求统计出每个NAME的最⼤AGE。
SELECT AA.*
FROM YANGGBS AA
INNER JOIN (
SELECT NAME, MAX(AGE)
FROM YANGGBS
GROUP BY NAME
) BB
ON =
另外⼀种⽅法就是使⽤开窗函数(分析函数),分组排序之后通过每个组中的顺序号来进⾏记录筛选。
SELECT AA.*
FROM YANGGBS AA
INNER JOIN (
SELECT NAME, ROW_NUMBER(PARTITION BY NAME ORDER BY AGE) AS RN
FROM YANGGBS
) BB
ON = AND BB.RN =1
更多的,这种⽅式在分页的实现上⽤途很⼤(通过RN进⾏顺序结果集筛选),⼏乎是数据库层⾯分页最好的解决⽅案。
"抛硬币来决定吧,碎了我们就在⼀起。
"。