CASE WHEN と SUM() を使用して SQL で列をピボットする
データ変換では、多くの場合、テーブルの再形成、データの行から列への移動、つまりピボットと呼ばれるプロセスが必要になります。 この例では、CASE WHEN
と SUM()
.
「Bank」という名前のサンプル テーブルを考えてみましょう:
Bank: name val amount John 1 2000 Peter 1 1999 Peter 2 1854 John 2 1888
私たちの目標は、このテーブルを次の形式に変換することです:
name amountVal1 amountVal2 John 2000 1888 Peter 1999 1854
単純なケースが失敗する理由
CASE WHEN
のみを使用した単純なアプローチは次のようになります:
SELECT name, CASE WHEN val = 1 THEN amount ELSE 0 END AS amountVal1, CASE WHEN val = 2 THEN amount ELSE 0 END AS amountVal2 FROM bank;
これにより、誤った結果が生成されます:
name amountVal1 amountVal2 John 2000 0 Peter 1999 0 John 0 1888 Peter 0 1854
問題は、各行が独立して扱われることです。 結果を集計する必要があります。
SUM() による正しい解決策
解決策は、SUM()
集計関数を使用して、amount
と name
の各組み合わせの val
値を合計することです。
SELECT name, SUM(CASE WHEN val = 1 THEN amount ELSE 0 END) AS amountVal1, SUM(CASE WHEN val = 2 THEN amount ELSE 0 END) AS amountVal2 FROM bank GROUP BY name;
このクエリはピボットテーブルを正しく生成します:
name amountVal1 amountVal2 John 2000 1888 Peter 1999 1854
GROUP BY name
句は、SUM()
関数が一意の名前ごとに金額を集計することを保証します。 CASE WHEN
ステートメントは、条件付きで金額を適切な列 (amountVal1
と amountVal2
) に割り当て、指定された名前に特定の val
が存在しない場合を、デフォルト値として 0 を使用して処理します。 この手法は、SQL で列のピボットを実行するための簡潔かつ効率的な方法を提供します。
以上がCASE WHEN と SUM() を使用して SQL で列をピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

mysqlviewshavelimitations:1)supportallsqloperations、制限、dataManipulationswithjoinsorubqueries.2)それらは、特にパフォーマンス、特にパルフェクソルラージャターセット

reperusermanmanagementInmysqliscialforenhancingsecurationsinginuring databaseaperation.1)usecreateusertoaddusers、指定connectionsourcewith@'localhost'or@'% '。

mysqldoes notimposeahardlimitontriggers、しかしpracticalfactorsdeTerminetheireffectiveuse:1)serverconufigurationStriggermanagement; 2)complentiggersincreaseSystemload;

はい、それはssafetostoreblobdatainmysql、butonsiderheSeCactors:1)Storagespace:blobscanconsumesificantspace.2)パフォーマンス:パフォーマンス:大規模なドゥエットブロブスメイズ階下3)backupandrecized recized recized recize

PHP Webインターフェイスを介してMySQLユーザーを追加すると、MySQLI拡張機能を使用できます。手順は次のとおりです。1。MySQLデータベースに接続し、MySQLI拡張機能を使用します。 2。ユーザーを作成し、CreateUserステートメントを使用し、パスワード()関数を使用してパスワードを暗号化します。 3. SQLインジェクションを防ぎ、MySQLI_REAL_ESCAPE_STRING()関数を使用してユーザー入力を処理します。 4.新しいユーザーに権限を割り当て、助成金ステートメントを使用します。

mysql'sblobissuitable forstoringbinarydatawithinarationaldatabase、whileenosqloptionslikemongodb、redis、andcassandraofferferulesions forunstructureddata.blobissimplerbutcanslowdowdowd withwithdata

toaddauserinmysql、使用:createuser'username '@' host'identifidedby'password '; here'showtodoitsely:1)chosehostcarefilytoconを選択しますTrolaccess.2)setResourcelimitslikemax_queries_per_hour.3)usestrong、uniquasswords.4)endforcessl/tlsconnectionswith

toavoidcommonMonmistakeswithStringDatatypesinmysql、undultingStringTypenuste、choosetherightType、andManageEncodingandCollationsEttingtingive.1)Usecharforfixed-LengthStrings、Varcharforaible Length、AndText/Blobforlardata.2)setCurrectCherts


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SublimeText3 中国語版
中国語版、とても使いやすい

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!
