ホームページ > データベース > mysql チュートリアル > MySQL で Long/Tall データを Wide フォーマットに再形成するにはどうすればよいですか?

MySQL で Long/Tall データを Wide フォーマットに再形成するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-21 01:38:14
オリジナル
433 人が閲覧しました

How Can I Reshape Long/Tall Data to Wide Format in MySQL?

MySQL でのデータの再構成: Long/Tall から Wide 形式への変換

データ分析では、多くの場合、長い形式からデータを再構成する必要があります。 /トールフォーマットからワイドフォーマットへ。この変換は、複数の行と列を持つテーブルを、より少ない行とより多くの列を持つテーブルに変換します。

問題ステートメント

long/tall 形式のデータを持つ MySQL テーブルを考えてみましょう。この形式では、各行が国、キー、値を含む 1 つの観測値を表します。目標は、国ごとに 1 行、キーごとに列を含むワイド形式にデータを再形成することです。

SQL ソリューション

MySQL には組み込み機能が用意されています。この変換を実行するには、クロス集計またはピボット テーブルと呼ばれます。方法は次のとおりです:

1.キーの識別

クエリを使用して、元のテーブルから個別のキーを選択します。

SELECT DISTINCT key FROM table;
ログイン後にコピー

このクエリの出力は、キー要素のリストを提供します。

2.ワイド テーブルの作成

次の構造を持つ新しいテーブルを作成します。

CREATE TABLE wide_table (
  country VARCHAR(255),
  key1 VARCHAR(255),
  ...,
  keyN VARCHAR(255),
  newPkey INT AUTO_INCREMENT PRIMARY KEY
);
ログイン後にコピー

key1、...、keyN を手順 1 で取得した実際のキー名に置き換えます。 newPkey 列は、ワイド内の各行を一意に識別するために使用される自動インクリメント主キーです。表。

3.テーブル値の入力

クロス集計クエリを使用して、広いテーブルにデータを入力します。

SELECT country, 
       MAX(IF(key='President', value, NULL)) AS President,
       MAX(IF(key='Currency', value, NULL)) AS Currency,
       ...

FROM table 
GROUP BY country;
ログイン後にコピー

このクエリは、条件付き集計 (MAX および IF) を利用して、キー列に値を割り当てます。それぞれの国ごとに。同じ国の重複キーを持つ行は、MAX 関数を使用して削除されます。

入力例と出力

入力:

country attrName attrValue key
US President Obama 2
US Currency Dollar 3
China President Hu 4
China Currency Yuan 5

出力:

country President Currency newPkey
US Obama Dollar 1
China Hu Yuan 2

この例では、からの変換を示します。 MySQL クロス集計を使用して、縦長/縦長から横長の形式に変換します。

以上がMySQL で Long/Tall データを Wide フォーマットに再形成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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