简体   繁体   English

如何在Oracle中计数后选择最大值?

[英]How to Select the Max Value after a Count in Oracle?

I have a query: 我有一个问题:

SELECT
  CST_CON_ID as ID_USER,
  X_TYPE_FOURTH_LVL as ELEMENT_TYPE,
  COUNT(X_TYPE_FOURTH_LVL) as T_REPEAT
FROM
  SIEBEL.S_SRV_REQ
GROUP BY
   CST_CON_ID,
   X_TYPE_FOURTH_LVL
ORDER BY
   CST_CON_ID;

Which returns the following information when run: 运行时返回以下信息:

ID_USER      ELEMENT_TYPE    T_REPEAT
1-1HQR-1380   REPOSITION      3
1-1HQR-1380   CANCELED        4
1-1HQR-1380   INFORMATION     1
1-1HQR-1380   SELLS           90
1-1HQR-1380   PROMOTIONS      3
1-1HQR-1380   ACCOUNTS        5
1-1HQR-1250   ACTIONS         34
1-1HQR-1250   PROG            60
1-1HQR-1250   INFORMATION     3
1-1HQR-1560   SELLS           40
1-1HQR-1560   BUYS            2
1-1HQR-1560   REPOSITION      1
1-1HQR-1560   PROMOTIONS      70

But now I want only to extract for each ID_USER the max value of T_REPEAT . 但现在我只想提取每个ID_USER的最大值T_REPEAT The expected output I want would look like this: 我想要的预期输出看起来像这样:

ID_USER      ELEMENT_TYPE    T_REPEAT
1-1HQR-1380   SELLS           90
1-1HQR-1250   PROG            60
1-1HQR-1560   PROMOTIONS      70

Is it possible to get this output using only a single query? 是否可以仅使用一个查询获得此输出?

One option is to use of row_number() : 一种选择是使用row_number()

SELECT ID_USER, ELEMENT_TYPE, T_REPEAT
FROM (SELECT CST_CON_ID as ID_USER, X_TYPE_FOURTH_LVL as ELEMENT_TYPE,
             COUNT(X_TYPE_FOURTH_LVL) as T_REPEAT,
             ROW_NUMBER() OVER (PARTITION BY CST_CON_ID ORDER BY COUNT(X_TYPE_FOURTH_LVL) DESC) AS Seq
      FROM SIEBEL.S_SRV_REQ
      GROUP BY CST_CON_ID, X_TYPE_FOURTH_LVL
     ) t
WHERE Seq = 1;

EDIT : If you have a ties with count then use dense_rank() function instead : 编辑:如果你有计数的关系,那么使用dense_rank()函数代替:

Wrap the current statement in a subquery. 将当前语句包装在子查询中。

SELECT ID_USER, ELEMENT_TYPE, MAX(T_REPEAT) 
FROM (
   SELECT
     CST_CON_ID as ID_USER,
     X_TYPE_FOURTH_LVL as ELEMENT_TYPE,
     COUNT(X_TYPE_FOURTH_LVL) as T_REPEAT
   FROM
     SIEBEL.S_SRV_REQ
   GROUP BY
      CST_CON_ID,
      X_TYPE_FOURTH_LVL
   ORDER BY
      T_REPEAT
   )
GROUP BY ID_USER

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM