我有一個正常的營業額表,其中包含 3 列“客戶”、“年份”、“金額”(例如)
| 顧客 | 年 | 數量 |
|---|---|---|
| 安東 | 2020年 | 5 美元 |
| 保羅 | 2019年 | 12 美元 |
| 安東 | 2021年 | 5 美元 |
| 保羅 | 2019年 | 10 美元 |
| 費利西亞 | 2021年 | 5 美元 |
| 安東 | 2019年 | 12 美元 |
| 費利佩 | 2019年 | 12 美元 |
我有以下 mysql 查詢
SELECT `customer` , SUM(`amount`) as summ FROM `customer`.`accountsales` WHERE `amount`> 0 GROUP BY `customer` ORDER BY summ DESC ;
這筆交易給了我一個漂亮的帕累托表,每個客戶的銷售額按降序排列
| 姓名 | 全年銷售 |
|---|---|
| 客戶 1 | 客戶1所有交易的總和 |
| 客戶 2 | 客戶2所有交易的總和 |
| 客戶 3 | customer3 的所有交易的總和 |
到目前為止一切順利,我想更進一步,我想創建下表
| 姓名 | 全年銷售 | 2021年銷售額 | 銷售2020 | 銷售2019 |
|---|---|---|---|---|
| 客戶 1 | 總和1 | 來自客戶 1 的 sum2021 | 來自客戶 1 的 sum2020 | 來自客戶 1 的 sum2019 |
| 客戶 2 | 總和2 | 來自客戶 2 的 sum2021 | 來自客戶 2 的 sum2020 | 來自 customer2 的 sum2019 |
| 客戶 3 | 總和3 | 來自客戶 3 的 sum2021 | 來自客戶 3 的 sum2020 | 來自客戶 3 的 sum2019 |
但我只想在一筆交易中完成,因為初始表非常大。
有人可以提示嗎?
pS 隨意編輯標題,因為我今天不是很受啟發
uj5u.com熱心網友回復:
您可以嘗試使用條件聚合函式
查詢 1:
SELECT `customer` ,
SUM(`amount`) 'Sales all years',
SUM(CASE WHEN year = 2021 THEN `amount` ELSE 0 END) Sales2021,
SUM(CASE WHEN year = 2020 THEN `amount` ELSE 0 END) Sales2020,
SUM(CASE WHEN year = 2019 THEN `amount` ELSE 0 END) Sales2019
FROM accountsales
GROUP BY `customer`
結果:
| customer | Sales all years | Sales2021 | Sales2020 | Sales2019 |
|----------|-----------------|-----------|-----------|-----------|
| anton | 22 | 5 | 5 | 12 |
| felicia | 5 | 5 | 0 | 0 |
| felipe | 12 | 0 | 0 | 12 |
| paul | 22 | 0 | 0 | 22 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/362924.html
標籤:mysql
上一篇:在sql中使用groupby陳述句時如何檢查多個條件
下一篇:SQL中的日期和時間轉換查詢
