ホームページ >データベース >mysql チュートリアル >CASE と GROUP BY を使用して SQLite でロング形式データからワイド形式データにピボットする方法
SQLite を使用して表形式データをロング形式からワイド形式に変換します
データ分析では、多くの場合、データをロング形式 (各行が 1 つのレコードを表し、複数の列が異なる値を表す) からワイド形式 (各レコードが複数の列を占める) に変換する必要があります。この操作をピボットと呼びます。
次の構造を持つ markdetails
というテーブルがあります:
studid
subjectid
marks
A1 3 50
A1 4 60
A1 5 70
B1 3 60
B1 4 80
C1 5 95
次の構造を持つ student_info
という名前のテーブルもあります:
studid
name
<code> A1 Raam B1 Vivek c1 Alex</code>
このデータを次のワイド形式にピボットしたいと考えています:
studid
name
subjectid_3
subjectid_4
subjectid_5
<code> A1 Raam 50 60 70 B1 Vivek 60 80 NULL c1 Alex NULL NULL 95</code>
これを行う 1 つの方法は、CASE
ステートメントを GROUP BY
とともに使用することです。次のクエリは、必要なワイド形式を返します:
<code class="language-sql">SELECT si.studid, si.name, SUM(CASE WHEN md.subjectid = 3 THEN md.marks END) AS subjectid_3, SUM(CASE WHEN md.subjectid = 4 THEN md.marks END) AS subjectid_4, SUM(CASE WHEN md.subjectid = 5 THEN md.marks END) AS subjectid_5 FROM student_info si JOIN markdetails md ON md.studid = si.studid GROUP BY si.studid, si.name;</code>
以上がCASE と GROUP BY を使用して SQLite でロング形式データからワイド形式データにピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。