ホームページ >データベース >mysql チュートリアル >MySQL は外部スクリプトを使用せずにロングフォーマットのデータをワイドフォーマットに変換できますか?

MySQL は外部スクリプトを使用せずにロングフォーマットのデータをワイドフォーマットに変換できますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-25 10:09:15365ブラウズ

Can MySQL Transform Long-Format Data to Wide-Format Without External Scripts?

MySQL でのロング形式からワイド形式へのデータの再形成

MySQL では、データは多くの場合、ロング形式またはトール形式で保存され、複数の属性が存在します。同じエンティティの別の行に格納されます。ただし、分析やレポートの目的では、各行がエンティティを表し、各列が属性を表すワイド形式のデータを使用する方が便利です。

MySQL を使用してロング形式のデータを変換できますか?外部スクリプトを使用せずにワイドフォーマットに変換しますか?はい、MySQL の強力なピボット テーブル機能を使用することが可能です。

ワイド テーブルの作成

  1. フェッチ キー リスト: クエリを使用して、長い形式のテーブルに存在するすべての個別のキーを取得する例:

    SELECT DISTINCT key FROM table;
  2. ワイド テーブルの作成: 必要な列を含む新しいテーブルを作成します。列名はキーに対応している必要があります。たとえば、President と Currency というキーがある場合、テーブルには President と Currency という名前の列が含まれている必要があります。

テーブル値の入力

幅の広いテーブルに値を入力するためのクロス集計クエリ。次のクエリはこれを示しています。

SELECT country,
       MAX(IF(key='President', value, NULL)) AS President,
       MAX(IF(key='Currency', value, NULL)) AS Currency,
       ...  -- Add other key-value pairs as needed

FROM table
GROUP BY country;

このクエリは、長いテーブルの各行をチェックし、その国の各キーと値のペアの最新値のみを返します。 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
US Obama Dollar
China Hu Yuan

結論

MySQL ピボット テーブルを使用すると、データを長い形式から広い形式に簡単に再形成して、分析やレポートに適したものにします。この方法は効率的であり、任意の数の属性を持つテーブルに適用できます。

以上がMySQL は外部スクリプトを使用せずにロングフォーマットのデータをワイドフォーマットに変換できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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