在MySQL中使用聚合函數檢索分組資料的第一條和最後一筆記錄
在MySQL中,當使用聚合函數從分組記錄中取得資料時,檢索該組的第一個和最後一個記錄可能具有挑戰性。雖然多個查詢可以完成此任務,但對於大型表來說效率可能較低。
為了優化這個過程,MySQL 使用 GROUP_CONCAT 和 SUBSTRING_INDEX 函數提供了更有效的解決方案.
使用 GROUP_CONCAT和SUBSTRING_INDEX
透過一起使用這些函數,您可以連接群組中的值,然後使用 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
工作原理:
範例:
考慮以下查詢:
SELECT MIN(low_price), MAX(high_price), 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 FROM symbols WHERE date BETWEEN(.. ..) GROUP BY YEARWEEK(date)
此查詢有效地檢索每個群組的第一筆(開啟)和最後一筆(關閉)記錄,從而最大限度地減少大型表格的處理時間。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3