前 N 個 SQL 查詢是否應該包含重複的最大值?

Patricia Arquette
發布: 2024-11-14 15:26:02
原創
431 人瀏覽過

Should Top N SQL Queries Include Duplicate Maximum Values?

找出 MySQL 表中前 N 個最高值

在資料分析和報表中,經常需要根據特定欄位的最高值。然而,當多個記錄在第 N 個位置附近共享相同的最大值時,可能會出現歧義。

問題:

使用SQL 選擇具有最高值的前N 行時對於特定列的值,查詢應該只傳回前N 行還是包含具有相同最大值的其他行?

答案:

答案取決於是否您想要包含或排除重複的最高值。以下是兩種方法:

方法1:排除重複的頂部值

要只擷取沒有重複項的前N 行,請使用下列查詢:

SELECT *
FROM t
ORDER BY value DESC
LIMIT N
登入後複製

在此查詢中,LIMIT N 子句將結果集限制為前N 行,排除第N 行以下具有相同最大值的任何行。

方法2:包含重複的頂部值

要擷取所有具有最高值的行(無論是否重複),請使用下列查詢:

SELECT *
FROM t JOIN
(SELECT min(value) AS cutoff
 FROM (SELECT value
       FROM t
       ORDER BY value
       LIMIT N
      ) tlim
) tlim
ON t.value >= tlim.cutoff;
登入後複製

此查詢使用子查詢來決定具有以下值的行的截止值:第N 個最高值。然後,它使用 ON 子句將此子查詢與主表連接起來,以過濾值大於或等於截止值的行。

其他注意事項:

  • 如果多行具有相同的最大值且第 N 行不重複,則方法 1 將只傳回前 N 行。
  • 方法 2 將始終傳回具有第 N 個最高值的所有行,無論是否是否重複的結果。
  • 查詢的效能可能會因表格大小和索引而異。

以上是前 N 個 SQL 查詢是否應該包含重複的最大值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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