首頁 >資料庫 >mysql教程 >如何在 MySQL 中使用聚合函數從分組行中檢索第一條和最後一筆記錄?

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-20 00:56:02416瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn