提问人:Wagner André Yamada Vieira 提问时间:12/22/2022 更新时间:12/22/2022 访问量:195
如何在对其他列进行分组时透视特定列 (SQL)
How to pivot specific columns while grouping other columns (SQL)
问:
我正在 Azure Databricks 环境中处理 SQL 查询,其中考虑以下数据集:
CREATE OR REPLACE TABLE tb_user_info
(
clientid INT,
visitid STRING,
channel STRING,
conversion INT,
index INT,
value STRING
);
INSERT INTO tb_user_info VALUES
(123, 'abc123', 'google', 1, 11, '1250'),
(123, 'abc123', 'google', 1, 22, '25000'),
(123, 'abc123', 'google', 1, 33, '1K and 3K'),
(456, 'def456', 'facebook', 3, 11, '2860'),
(456, 'def456', 'facebook', 3, 22, '78000'),
(456, 'def456', 'facebook', 3, 33, '3K and 5K');
SELECT * FROM tb_user_info ORDER BY clientid, index
客户端 ID | 访问ID | 渠道 | 转换 | 指数 | 价值 |
---|---|---|---|---|---|
123 | ABC123型 | 谷歌 | 1 | 11 | 1250 |
123 | ABC123型 | 谷歌 | 1 | 22 | 25000 |
123 | ABC123型 | 谷歌 | 1 | 33 | 1K 和 3k |
456 | DEF456型 | 脸书 | 3 | 11 | 2860 |
456 | DEF456型 | 脸书 | 3 | 22 | 78000 |
456 | DEF456型 | 脸书 | 3 | 33 | 3K 和 5K |
我想得到以下输出:
客户端 ID | 访问ID | 渠道 | 转换 | 薪水 (index=11) | 储蓄 (指数=22) | 薪资范围 (index=33) |
---|---|---|---|---|---|---|
123 | ABC123型 | 谷歌 | 1 | 1250 | 25000 | 1K 和 3k |
456 | DEF456型 | 脸书 | 1 | 2860 | 78000 | 3K 和 5K |
其中 clientid、visitid、channel 和 conversion 列分组,索引和值列是透视的列。
你能帮我解决这个任务吗?
答:
1赞
miemengniao
12/22/2022
#1
我不确定你遇到了什么实际问题,我写了一个查询,它似乎工作正常,
SELECT * FROM (
SELECT clientid, visitid , channel , conversion , ind , value
FROM tb_user_info
) ss
PIVOT (
max(value)
FOR ind in (
[11] ,[22] ,[33]
)
) as a
上一个:如何从列表创建接触点表
评论