如何在 MySQL 中使用聚合函數從分組行中檢索第一條和最後一筆記錄?

Mary-Kate Olsen
發布: 2024-11-20 00:56:02
原創
359 人瀏覽過

How to Retrieve the First and Last Records from Grouped Rows with Aggregate Functions in MySQL?

在MySQL 中使用聚合函數從分組行中檢索第一條和最後一條記錄

在SQL 中,聚合函數可以高效地匯總跨組的數據。然而,當遇到分組記錄時,使用者在檢索每組的第一筆和最後一筆記錄時可能會遇到挑戰。在處理大型表時,這變得特別相關。

考慮以下查詢:

SELECT MIN(low_price), MAX(high_price), open, close
FROM symbols
WHERE date BETWEEN(.. ..)
GROUP BY YEARWEEK(date)
登入後複製

雖然此查詢提供每個組的聚合統計資訊(例如最低和最高價格),但它確實不提供每週的第一個和最後一個記錄。為了滿足這項需求,MySQL 提供了多種方法。

使用 GROUP_CONCAT 和 SUBSTRING_INDEX

一種有效的技術涉及利用 GROUP_CONCAT 和 SUBSTRING_INDEX 函數。 GROUP_CONCAT 連線組內的指定值,並以分隔符號分隔。 SUBSTRING_INDEX 反過來從連接的字串中提取子字串。

以下是我們如何利用這些函數來實現我們想要的結果:

SUBSTRING_INDEX( GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1 ) AS open
SUBSTRING_INDEX( GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1 ) AS close 
登入後複製

這種方法消除了對昂貴的子查詢的需要,並被證明是高度有效的對於此類特定場景非常有效。

有關 GROUP_CONCAT 和 SUBSTRING_INDEX 函數的進一步了解,請參閱官方 MySQL 文件。

以上是如何在 MySQL 中使用聚合函數從分組行中檢索第一條和最後一筆記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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