如何從資料庫表中檢索前 n 個最大值?

Barbara Streisand
發布: 2024-11-10 10:59:02
原創
621 人瀏覽過

How to Retrieve the Top n Max Values from a Database Table?

從表格中選取最高的最大值

在資料庫管理中,可能需要從表格中擷取前 n 個最高值。為了實現這一目標,有幾種方法可用。考慮下表:

column1  column2
   1       foo
   2       foo
   3       foo
   4       foo
   5       bar
   6       bar
   7       bar
   8       bar
登入後複製

對於 n=2,我們希望得到以下結果:

3    
4    
7    
8    
登入後複製

使用 Group Max 進行近似

最初的方法是計算每個組的最大值:

SELECT max(column1) FROM table GROUP BY column2
登入後複製

但是,此方法僅提供每個組的最高值,而不是前 n 個值。

基於聯合的解決方案

對於n=2,可以使用以下基於聯合的查詢:

SELECT max(column1) m
FROM table t
GROUP BY column2
UNION
SELECT max(column1) m
FROM table t
WHERE column1 NOT IN (SELECT max(column1)
                      WHERE column2 = t.column2)
登入後複製

此查詢選擇頂部值,然後透過連線排除重複項第二個查詢,找出尚未選擇的下一個最高值。

排名模擬

對於任何 n 值,更通用的方法是模擬排名( ) 分區上的函數。一種方法是:

SELECT t.*
FROM
   (SELECT grouper,
          (SELECT val
           FROM table li
           WHERE li.grouper = dlo.grouper
           ORDER BY
                 li.grouper, li.val DESC
           LIMIT 2,1) AS mid
   FROM
      (
      SELECT DISTINCT grouper
      FROM table
      ) dlo
   ) lo, table t
WHERE t.grouper = lo.grouper
      AND t.val > lo.mid
登入後複製

此查詢按所需列對值進行分組,然後在指定限制內找到每個組的下一個最高值(在本例中,n= 2 ,1) 2).

遵循這些方法,您可以有效地從給定表中選擇前n 個最大值,確保消除重複值並傳回正確的記錄數。

以上是如何從資料庫表中檢索前 n 個最大值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板