zoukankan      html  css  js  c++  java
  • 先分组查询,然后为每组数据排序,取出最大值

     

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

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

  • 相关阅读:
    【BZOJ】4349: 最小树形图
    【AtCoder】AtCoder Petrozavodsk Contest 001
    【LOJ】#2525. 「HAOI2018」字串覆盖
    趣味题:恺撒Caesar密码(c++实现)
    趣味问题:画图(c++实现)
    趣味问题:到底买不买
    成绩大排队
    A除以B问题
    2017-统计字符个数
    2016-数据的交换输出
  • 原文地址:https://www.cnblogs.com/zhouyunbaosujina/p/3289535.html
Copyright © 2011-2022 走看看