ホームページ >データベース >mysql チュートリアル >GROUP BY 句を使用して MySQL でクエリ結果をピボットするにはどうすればよいですか?

GROUP BY 句を使用して MySQL でクエリ結果をピボットするにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-06 11:27:02953ブラウズ

How can I pivot query results in MySQL using the GROUP BY clause?

MySQL で GROUP BY を使用したクエリ結果のピボット

ピボットは、データを行から列に再構築することで、データの視覚化と分析を向上させるのに役立ちます。特定の列に基づいてクエリ結果をピボットするには、MySQL の GROUP BY 句を使用できます。

次のスキーマを持つサンプル テーブルを考えてみましょう:

data_id     data_timestamp         data_value
--------------------------------------------
1           2011-07-07 00:01:00    0.400  
1           2011-07-07 00:02:00    0.500
1           2011-07-07 00:03:00    0.600
1           2011-07-07 00:04:00    0.700
2           2011-07-07 00:01:00    0.100  
2           2011-07-07 00:02:00    0.200
2           2011-07-07 00:03:00    0.250
2           2011-07-07 00:04:00    2.300

このデータを以下に基づいてピボットするにはdata_timestamp 列では、CASE ステートメントと SUM 集計関数を組み合わせて使用​​できます。

SELECT d.data_timestamp
     , SUM( CASE WHEN data_id =  1 THEN data_value ELSE 0 END ) AS 'input_1'
     , SUM( CASE WHEN data_id =  2 THEN data_value ELSE 0 END ) AS 'input_2'
FROM data 
GROUP BY data_timestamp
ORDER BY data_timestamp ASC

このクエリは、一意の data_timestamp ごとに data_value 列を効果的に要約し、個別の data_id ごとに新しい列を作成します (この例ではcase、input_1、input_2)。​​

また、IF ステートメントを使用して同じ結果を達成することもできます。

SELECT d.data_timestamp
     , SUM( IF(data_id =  1, data_value, 0) ) AS 'input_1'
     , SUM( IF(data_id =  2, data_value, 0) ) AS 'input_2'
FROM data 
GROUP BY data_timestamp
ORDER BY data_timestamp ASC

これらの方法は両方とも、次を使用してクエリ結果をピボットする効果的な方法を提供します。 MySQL の GROUP BY 句により、より柔軟で有益なデータ分析が可能になります。

以上がGROUP BY 句を使用して MySQL でクエリ結果をピボットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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