【发布时间】:2021-08-19 15:15:00
【问题描述】:
我想按以下方式调整每个国家/地区的总和(销售额)。但是价格列应该是每家商店的平均值。所以,我很想得到这样的结果:
期望的结果:
| shop | avg_price | US | CN |
|---|---|---|---|
| 2 | 6 | 100 | 10 |
| 3 | 5 | 60 | 10 |
当前结果:
| shop | price | US | CN |
|---|---|---|---|
| 2 | 5 | null | 5 |
| 2 | 7 | 100 | 5 |
| 3 | 5 | 60 | 10 |
我可以在枢轴部分跳过价格,稍后再重新加入。但是,我相信有一个更聪明的选择。你能帮帮我吗?
查询(到目前为止)
SELECT *
FROM (
SELECT 'US' AS country, 2 AS shop, 50 AS sales, 5 AS price
FROM dual
UNION ALL
SELECT 'CN' AS country, 2 AS shop, 5 AS sales, 7 AS price
FROM dual
UNION ALL
SELECT 'US' AS country, 3 AS shop, 50 AS sales, 5 AS price
FROM dual
UNION ALL
SELECT 'CN' AS country, 3 AS shop, 5 AS sales, 5 AS price
FROM dual
UNION ALL
SELECT 'US' AS country, 2 AS shop, 50 AS sales, 5 AS price
FROM dual
UNION ALL
SELECT 'CN' AS country, 2 AS shop, 5 AS sales, 5 AS price
FROM dual
UNION ALL
SELECT 'US' AS country, 3 AS shop, 10 AS sales, 5 AS price
FROM dual
UNION ALL
SELECT 'CN' AS country, 3 AS shop, 5 AS sales, 5 AS price
FROM dual
)
PIVOT ( SUM(sales) FOR country IN ( 'US','CN' )
);
【问题讨论】: