從MySQL 中的分組結果中擷取第一條和最後一筆記錄
在MySQL 中,從分組結果集中取得第一條和最後一筆記錄,同時應用聚合函數可能具有挑戰性。考慮以下查詢:
SELECT MIN(low_price), MAX(high_price), open, close FROM symbols WHERE date BETWEEN (.. ..) GROUP BY YEARWEEK(date)
此查詢按週將資料分組,併計算每週的最低低價、最高最高價、開盤價和收盤價。但是,它不提供每個組中的第一個和最後一個記錄。
要實現此目的,一種方法是使用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
此解決方案可讓您連接每個群組的所有開啟值和關閉值,以逗號分隔,然後使用SUBSTRING_INDEX 提取第一個和最後一個值。這種方法避免了昂貴的子查詢,並且可以更有效地解決這個特定問題。
有關 GROUP_CONCAT 和 SUBSTRING_INDEX 函數的更多信息,請參閱 MySQL 文件。此外,您還可以探索其他選項,例如使用視窗函數或使用者定義的函數,具體取決於查詢的特定要求。
以上是如何從 MySQL 分組結果中檢索第一筆和最後一筆記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!