首頁 > 資料庫 > mysql教程 > 如何在SQL中選擇每個群組的前兩行?

如何在SQL中選擇每個群組的前兩行?

Mary-Kate Olsen
發布: 2024-12-31 15:13:13
原創
570 人瀏覽過

How to Select the Top Two Rows for Each Group in SQL?

選擇每個SQL 群組中的前兩行

在SQL 中,常見任務是只擷取每個群組的前幾行。然而,用於分組的標準聚合函數(例如 MAX() 和 MIN())僅允許選擇最高或最低值。

選擇每個名稱的前兩個分數的查詢:

為了應對這一挑戰,需要更複雜的查詢。以下是如何為所提供的表中的每個名稱選擇前兩個分數的範例:

SELECT *
FROM   test s
WHERE 
        (
            SELECT  COUNT(*) 
            FROM    test  f
            WHERE f.name = s.name AND 
                  f.score >= s.score
        ) <= 2;
登入後複製

說明:

  • 外部查詢( SELECT * ...) 擷取測試表中的所有行。
  • 子查詢 (SELECT COUNT(*) ...) 決定有多少行測驗表中每個名稱都存在分數等於或大於目前行分數的記錄。
  • 然後,WHERE 子句透過確保子查詢的計數小於來過濾外部查詢中的行或等於 2。

範例輸出:

上面的查詢傳回下列輸出:

NAME    SCORE
-----------------
willy       2
willy       3
zoe         5
zoe         6
登入後複製

此輸出依需求包含表中每個名稱的前兩個分數。

以上是如何在SQL中選擇每個群組的前兩行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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