ホームページ  >  記事  >  データベース  >  MySQL でグループ化されたデータから最初と最後のレコードを取得する方法

MySQL でグループ化されたデータから最初と最後のレコードを取得する方法

DDD
DDDオリジナル
2024-11-08 19:16:021038ブラウズ

How to Retrieve First and Last Records from Grouped Data 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 関数。次のクエリは、最初と最後の始値の列を含めるように元のクエリを変更します。

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)

説明

  • GROUP_CONCAT: の値を連結します。各グループ内の指定された列 (オープンなど)、 comma.
  • SUBSTRING_INDEX: 指定された区切り文字 (この場合はカンマ) の前後の部分文字列を抽出します。

これらの関数を使用すると、クエリは効率的に各グループの最初の始値と最後の終値。このアプローチにより、複数のサブクエリの必要性が回避され、必要なデータを取得するためのパフォーマンスの高いソリューションが提供されます。

以上がMySQL でグループ化されたデータから最初と最後のレコードを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。