MySQL の集計関数を使用してグループ化された行から最初と最後のレコードを取得する方法

Mary-Kate Olsen
リリース: 2024-11-20 00:56:02
オリジナル
373 人が閲覧しました

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 の使用

効率的な手法の 1 つは、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 中国語 Web サイトの他の関連記事を参照してください。

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