分组查询并查询出每组中的最大值
现有如左图的一个数据集合,要求:以anchor字段分组,并且将每组中的最大值查询出来。
/*
LED数据查询:先分组查询,然后为每组数据排序,取出最大值
要点:
row_number() OVER (PARTITION BY RealOperateAnchor ORDER BY count(*) DESC) rank将数据按照RealOperateAnchor分组,并按照count(*)排序
数据插入到临时表中,通过在临时表中简单查询实现目的*/
SELECT DISTINCT hot.RealOperatorName name
, count(*) sums
, RealOperateAnchor anchor
, row_number() OVER (PARTITION BY RealOperateAnchor ORDER BY count(*) DESC) rank
INTO
#tem
FROM
TCHotelOrder.dbo.HotelOrderTrack hot WITH (NOLOCK)
WHERE
RealOperateAnchor IN (13, 14, 15, 33, 2)
AND hot.RealOperatorID > 0
AND hot.ActionResult <> 5
GROUP BY
RealOperateAnchor
, RealOperatorName
查出上面的数据,并用“row_number() OVER (PARTITION BY RealOperateAnchor ORDER BY count(*) DESC) rank”将查询出来的数据按照anchor递增排序,rank标识了各组数据中的大小名次。如下图:
查询每组中的sums最大值:
SELECT *
FROM #tem t WHERE rank=1