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