使用 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
),透過使用 0 作為預設值來處理給定名稱缺少特定 val
的情況。 該技術提供了一種在 SQL 中執行列透視的簡潔有效的方法。
以上是如何使用 CASE WHEN 和 SUM() 在 SQL 中透視列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

mysqlviewshavelimitations:1)他們不使用Supportallsqloperations,限制DatamanipulationThroughViewSwithJoinsOrsubqueries.2)他們canimpactperformance,尤其是withcomplexcomplexclexeriesorlargedatasets.3)

porthusermanagementinmysqliscialforenhancingsEcurityAndsingsmenting效率databaseoperation.1)usecReateusertoAddusers,指定connectionsourcewith@'localhost'or@'%'。

mysqldoes notimposeahardlimitontriggers,butacticalfactorsdeterminetheireffactective:1)serverConfiguration impactactStriggerGermanagement; 2)複雜的TriggerSincreaseSySystemsystem load; 3)largertablesslowtriggerperfermance; 4)highConconcConcrencerCancancancancanceTigrignecentign; 5); 5)

Yes,it'ssafetostoreBLOBdatainMySQL,butconsiderthesefactors:1)StorageSpace:BLOBscanconsumesignificantspace,potentiallyincreasingcostsandslowingperformance.2)Performance:LargerrowsizesduetoBLOBsmayslowdownqueries.3)BackupandRecovery:Theseprocessescanbe

通過PHP網頁界面添加MySQL用戶可以使用MySQLi擴展。步驟如下:1.連接MySQL數據庫,使用MySQLi擴展。 2.創建用戶,使用CREATEUSER語句,並使用PASSWORD()函數加密密碼。 3.防止SQL注入,使用mysqli_real_escape_string()函數處理用戶輸入。 4.為新用戶分配權限,使用GRANT語句。

mysql'sblobissuitableForStoringBinaryDataWithInareLationalDatabase,而ilenosqloptionslikemongodb,redis和calablesolutionsolutionsolutionsoluntionsoluntionsolundortionsolunsonstructureddata.blobobobissimplobisslowdeperformberbutslowderformandperformancewithlararengedata;

toaddauserinmysql,使用:createUser'username'@'host'Indessify'password'; there'showtodoitsecurely:1)choosethehostcarecarefullytocon trolaccess.2)setResourcelimitswithoptionslikemax_queries_per_hour.3)usestrong,iniquepasswords.4)Enforcessl/tlsconnectionswith

toAvoidCommonMistakeswithStringDatatatPesInMysQl,CloseStringTypenuances,chosethirtightType,andManageEngencodingAndCollationsEttingSefectery.1)usecharforfixed lengengtrings,varchar forvariable-varchar forbariaible length,andtext/blobforlargerdataa.2 seterters seterters seterters


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具