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

如何在 SQL 中取得每個群組的前兩行?

Patricia Arquette
發布: 2024-12-29 11:05:11
原創
608 人瀏覽過

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

在SQL 中獲取每個群組的前兩行

SQL 查詢使用戶能夠從表中提取特定數據,但是如果您需要怎麼辦選擇每組的前兩行?當您想要分析得分最高的記錄或檢索群組內的多個值時,可能會遇到這種情況。

讓我們以下表格為例:

NAME SCORE
willy 1
willy 2
willy 3
zoe 4
zoe 5
zoe 6

要擷取每個名字的最高兩個分數,我們可以使用以下SQL 查詢:

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

以下是查詢的方式運作原理:

  • 外部查詢(SELECT * FROM test)從測試表中選擇所有行。
  • 括在括號中的內部查詢計算表中的行數給定名稱和分數大於或等於當前行分數的測試表 (f.score >= s.score)。
  • 外部查詢的 WHERE 子句根據內部查詢的計數過濾行。僅選擇計數小於或等於 2 的行。這確保我們獲得每組的前兩名分數。

此查詢的預期輸出如下:

NAME SCORE
willy 2
willy 3
zoe 5
zoe 6

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

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