使用 SQL 透视数据集

问题描述 投票:0回答:1

提前谢谢大家。我从来没有用 SQL 进行过旋转,并且在尝试了很长一段时间后,我还没有成功。

下面是我的数据集的一个小样本,我希望按月旋转数据,并每年都有单独的行。

以下内容来自:

SELECT source,
region,
period,
revenue,
tax_rate,
users
FROM source_data

理想情况下,所需的输出看起来类似于下面的内容,但我只是不确定如何使用 SQL 达到这一点:

sql google-bigquery pivot
1个回答
0
投票

我在 BigQuery 上使用了三个数据透视来实现与上面的图像类似的效果。如下询问。

WITH
  table_a AS (
  SELECT
    *EXCEPT(period),
    SPLIT(period,"-")[
  OFFSET
    (0)] AS period,
    FORMAT_DATE('%B', CAST(CONCAT(period,"-01") AS date)) AS month,
    FORMAT_DATE('%B', CAST(CONCAT(period,"-01") AS date)) AS month2,
    FORMAT_DATE('%B', CAST(CONCAT(period,"-01") AS date)) AS month3
  FROM
    `optimal-weft-418017.78268160.78268160_01` ),
  table_b AS (
  SELECT
    *
  FROM
    table_a PIVOT ( MIN(revenue) AS revenue FOR month IN ('January') )),
  table_c AS (
  SELECT
    *
  FROM
    table_b PIVOT ( MIN(tax_rate) AS tax_rate FOR month2 IN ('January') ) ),
  table_d AS (
  SELECT
    *
  FROM
    table_c PIVOT ( MIN(Users) AS Users FOR month3 IN ('January') ) )
SELECT
  SOURCE,
  region,
  period,
  CONCAT("Revenue: ",revenue_january,"\nTax Rate: ",tax_rate_January,"\n Users: ",users_january) as info
FROM
  table_d

输入表示例:

来源 地区 期间 收入 税率 用户
来源A I区 2021-01 18440150.48 0.14 0
来源B 第七区 2021-01 272382497.2 0.14 30575905
来源C 第六区 2021-01 23244127.87 0.14 2514972

示例输出表:

来源 地区 一月信息
来源A I区 2021 收入:18440150.48,税率:0.14,用户:0
来源B 第七区 2021 收入:272382497.2,税率:0.14,用户:30575905
来源C 第六区 2021 收入:23244127.87,税率:0.14,用户:2514972

需要注意的一些事项:您必须将三个数据透视表中的剩余月份添加为“二月”、“三月”等,才能根据上图获得每个月的汇总数据。

© www.soinside.com 2019 - 2024. All rights reserved.