如何在对其他列进行分组时透视特定列 (SQL)

How to pivot specific columns while grouping other columns (SQL)

提问人:Wagner André Yamada Vieira 提问时间:12/22/2022 更新时间:12/22/2022 访问量:195

问:

我正在 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

其中 clientidvisitidchannelconversion 列分组,索引和列是透视的列。

我尝试过使用 Pivot 功能并阅读了此文档,但没有成功。

你能帮我解决这个任务吗?

Apache - Spark-SQL 数据操作 Azure-Databricks Databricks-SQL

评论


答:

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