分桶

使用 SQL 分析业务数据

Michel Semaan

Data Scientist

直方图 - 回顾

WITH user_orders AS (
  SELECT
    user_id,
    COUNT(DISTINCT order_id) AS orders
  FROM meals
  JOIN orders ON meals.meal_id = orders.meal_id
  GROUP BY user_id)

SELECT
  orders,
  COUNT(DISTINCT user_id) AS users
FROM user_orders
GROUP BY orders
ORDER BY orders ASC
LIMIT 5;
使用 SQL 分析业务数据

CASE 表达式

查询

SELECT
  CASE
    WHEN meal_price < 4 THEN '低价餐'
    WHEN meal_price < 6 THEN '中价餐'
    ELSE '高价餐'
  END AS price_category,
  COUNT(DISTINCT meal_id)
FROM meals
GROUP BY price_category;
使用 SQL 分析业务数据

分桶 - 查询

WITH user_revenues AS (
  SELECT
    user_id,
    SUM(meal_price * order_quantity) AS revenue
  FROM meals
  JOIN orders ON meals.meal_id = orders.meal_id
  GROUP BY user_id)

SELECT CASE WHEN revenue < 150 THEN '低收入用户' WHEN revenue < 300 THEN '中收入用户' ELSE '高收入用户' END AS revenue_group, COUNT(DISTINCT user_id) AS users FROM user_revenues GROUP BY revenue_group;
使用 SQL 分析业务数据

分桶 - 结果

revenue_group       users
------------------  -----
Low-revenue users   473
Mid-revenue users   606
High-revenue users  225
使用 SQL 分析业务数据

直方图 vs. 柱状图

每位用户订单数的直方图

各收入组用户数柱状图

使用 SQL 分析业务数据

分桶

使用 SQL 分析业务数据

Preparing Video For Download...