MySQL でグループ化された結果から最初と最後のレコードを取得するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-10 06:22:02
オリジナル
810 人が閲覧しました

How to Retrieve the First and Last Records from Grouped Results in MySQL?

MySQL のグループ化された結果から最初と最後のレコードを取得する

MySQL では、グループ化された結果セットの最初と最後のレコードを取得します。集計関数を適用するのは難しい場合があります。次のクエリについて考えてみましょう:

SELECT MIN(low_price), MAX(high_price), open, close
FROM symbols
WHERE date BETWEEN (.. ..)
GROUP BY YEARWEEK(date)
ログイン後にコピー

このクエリはデータを週ごとにグループ化し、週ごとの最小安値、最大高値、始値、終値を計算します。ただし、各グループ内の最初と最後のレコードは提供されません。

これを実現するには、GROUP_CONCAT 関数と SUBSTRING_INDEX 関数を使用することが 1 つの方法です。

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート