先分组查询,然后为每组数据排序,取出最大值

 

分组查询并查询出每组中的最大值

现有如左图的一个数据集合,要求:以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

原文地址:https://www.cnblogs.com/zhouyunbaosujina/p/3289535.html