ホームページ > データベース > mysql チュートリアル > データを行から列にピボットする MySQL クロス集計クエリを作成する方法

データを行から列にピボットする MySQL クロス集計クエリを作成する方法

Barbara Streisand
リリース: 2025-01-06 10:42:42
オリジナル
707 人が閲覧しました

How to Create a MySQL Crosstab Query to Pivot Data from Rows to Columns?

MySQL ピボット/クロスタブ クエリ: 表示を強化するためのデータの変換

MySQL のクロス集計またはピボット クエリを使用すると、通常は行指向の構造からデータを変換できます。列指向であり、分析とプレゼンテーションが容易になります。クロス集計クエリの使用方法を理解するために、実際の例を詳しく見てみましょう。

例: データを列指向形式にピボットする

次の構造を持つテーブルについて考えてみましょう:

app_id  transaction_id  mobile_no  node_id  customer_attribute  entered_value
100     111             9999999999  1        Q1                  2
100     111             9999999999  2        Q2                  1
100     111             9999999999  3        Q3                  4
100     111             9999999999  4        Q4                  3
100     111             9999999999  5        Q5                  2
100     222             8888888888  4        Q4                  1
100     222             8888888888  3        Q3                  2
100     222             8888888888  2        Q2                  1
100     222             8888888888  1        Q1                  3
100     222             8888888888  5        Q5                  4
ログイン後にコピー

これらのレコードを次のように表示したいとしますformat:

app_id  transaction_id  mobile     Q1  Q2  Q3  Q4 | Q5
100    111             9999999999   2   1   4  3  2
100    222             8888888888   3   1   2  1  4
ログイン後にコピー

これを実現するには、クロス集計クエリを利用します。ただし、最初の試行では、データ ポイントごとに複数の行を取得しましたが、これは望ましい結果ではありません。

修正されたクロス集計クエリ

次の調整されたクエリにより、望ましい結果が得られます:

SELECT app_id, transaction_id, mobile_no,
  MAX(CASE WHEN node_id = 1 THEN entered_value END) AS Q1,
  MAX(CASE WHEN node_id = 2 THEN entered_value END) AS Q2,
  MAX(CASE WHEN node_id = 3 THEN entered_value END) AS Q3,
  MAX(CASE WHEN node_id = 4 THEN entered_value END) AS Q4,
  MAX(CASE WHEN node_id = 5 THEN entered_value END) AS Q5
FROM trn_user_log
GROUP BY app_id, transaction_id, mobile_no
ログイン後にコピー

顧客属性を列ヘッダーとして使用する

値を使用したいという要望も表明しましたcustomer_attribute 列から列ヘッダーとして取得します。 NAME_CONST 関数はこの目的には適していませんが、望ましい結果を達成できる手法を利用できます。ただし、正確な解決策を可能にするために、希望する結果についてさらに明確にしてください。

以上がデータを行から列にピボットする MySQL クロス集計クエリを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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