开始使用免费开始使用

按月透视用户收入

接下来,Eve 告诉您,高管层更喜欢宽表而不是长表,因为更便于浏览。她准备了一份按月统计的用户收入示例报告,包含 2018 年 6 月至 8 月前 5 个用户 ID 的收入明细。高管要求按月份对该表进行透视。她把这个任务交给了您。

请将按月的用户收入查询进行透视,使用户 ID 为行,2018 年 6 月至 8 月的每个月为列。

本练习是课程的一部分

使用 SQL 分析业务数据

查看课程

练习说明

  • tablefunc 启用 CROSSTAB()
  • 声明新的透视表列:用户 ID,以及运营的前三个月。

交互式实操练习

通过完成这段示例代码来试试这个练习。

-- Import tablefunc
CREATE EXTENSION IF NOT EXISTS ___;

SELECT * FROM CROSSTAB($$
  SELECT
    user_id,
    DATE_TRUNC('month', order_date) :: DATE AS delivr_month,
    SUM(meal_price * order_quantity) :: FLOAT AS revenue
  FROM meals
  JOIN orders ON meals.meal_id = orders.meal_id
 WHERE user_id IN (0, 1, 2, 3, 4)
   AND order_date < '2018-09-01'
 GROUP BY user_id, delivr_month
 ORDER BY user_id, delivr_month;
$$)
-- Select user ID and the months from June to August 2018
AS ct (___ INT,
       ___ FLOAT,
       ___ FLOAT,
       ___ FLOAT)
ORDER BY user_id ASC;
编辑并运行代码