簡體   English   中英

更快選擇Max SQL查詢

[英]Faster select Max SQL Query

這是用於選擇具有最大行數的配置類型的查詢。 有沒有第二種查詢選擇數據一樣快的另一種方法呢?

select CONFIG_TYPE, MAX(COUNTING) FROM 
(select CONFIG_TYPE, COUNT(*) as COUNTING FROM NOTIFICATION_CONFIG GROUP BY CONFIG_TYPE)
WHERE COUNTING =
(select MAX(COUNTING) FROM 
(select COUNT(*) as COUNTING FROM NOTIFICATION_CONFIG GROUP BY CONFIG_TYPE)
)GROUP BY CONFIG_TYPE

第二個查詢將在1個搜索中完成工作,而另一個查詢將在2個搜索中完成工作。

select CONFIG_TYPE, COUNTING FROM
(select CONFIG_TYPE, COUNT(*) as COUNTING FROM NOTIFICATION_CONFIG
GROUP BY CONFIG_TYPE ORDER BY COUNTING DESC FETCH FIRST 1 ROW ONLY)

只是想知道是否還有另一種方法可以做到這一點。

使用窗口功能!

SELECT c.*
FROM (SELECT CONFIG_TYPE, COUNT(*) as COUNTING,
             RANK() OVER (ORDER BY COUNT(*) DESC) as seqnum
      FROM NOTIFICATION_CONFIG
      GROUP BY CONFIG_TYPE
     ) c
WHERE seqnum = 1;

這使用RANK() ,因此它將返回所有最大值(在平局的情況下)。 如果要在ROW_NUMBER()的情況下返回任意的最大值,請改用ROW_NUMBER() 或者,如果您不想要聯系,則可以執行以下操作:

SELECT CONFIG_TYPE, COUNT(*) as COUNTING
FROM NOTIFICATION_CONFIG
GROUP BY CONFIG_TYPE
ORDER BY COUNT(*) DESC
FETCH FIRST 1 ROW ONLY;

這只是搞砸了

select CONFIG_TYPE, MAX(COUNTING) 
FROM  ( select CONFIG_TYPE, COUNT(*) as COUNTING 
        FROM NOTIFICATION_CONFIG 
        GROUP BY CONFIG_TYPE 
      )
WHERE COUNTING = ( select MAX(COUNTING) 
                   FROM ( select COUNT(*) as COUNTING 
                          FROM NOTIFICATION_CONFIG 
                          GROUP BY CONFIG_TYPE
                        )
                 )
GROUP BY CONFIG_TYPE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM