SQL数据分组后取最大值或者取前几个值(依照某一列排序)

Posted gcczhongduan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL数据分组后取最大值或者取前几个值(依照某一列排序)相关的知识,希望对你有一定的参考价值。

今日做项目的时候,项目中遇到须要将数据分组后,分组中的最大值,想了想,不知道怎么做。于是网上查了查,最终找到了思路,经过比較这个查询时眼下用时最快的,事实上还有别的方法,可是我认为我们仅仅掌握最快的方法即可 。好了,不说废话了!

直接上内容吧:下面数据是通过

SELECT [CustomerCaseNo],[PaymentsTime] FROM [BOMSDatabase].[dbo].[BAL_paymentsSwiftInfo] where StoresNo=‘zq00000034‘ group by CustomerCaseNo,[PaymentsTime] 

语句得到的,这个语句大家都会写了 

技术分享

技术分享

如今须要做的事,把这个数据依照[CustomerCaseNo]分组以后  取出PaymentsTime字段里面的近期时间。要做到这个。用以下的语句就能够实现

select * from( select StoresNo,[CustomerCaseNo],[PaymentsTime], ROW_NUMBER()  over(partition by CustomerCaseNo order by [PaymentsTime] desc) as rowNum
from BAL_paymentsSwiftInfo where StoresNo=‘zq00000034‘) ranked where ranked.rowNum <= 1 order by ranked.CustomerCaseNo, ranked.PaymentsTime desc
当运行完红字部分的SQL语句。就出现例如以下结果
技术分享
技术分享

达到我的要求,对数据分组以后,取出分组里面时间近期的数据记录,用到的SQL函数为
ROW_NUMBER()  over(partition by 分组字段order by 排序字段 desc)











以上是关于SQL数据分组后取最大值或者取前几个值(依照某一列排序)的主要内容,如果未能解决你的问题,请参考以下文章

oracle 按条件排序后取最近一条

SQL如何对分组后的结果进行排序并且取前几名

sql 每个编号按时间排序取前两条数据

oracle开展分组后,取出每组的前几条数据

Hive分组取TOPN数据

SQL实现分组查询取前几条记录