Binning

Zakelijke data analyseren in SQL

Michel Semaan

Data Scientist

Histogrammen - herhaling

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;
Zakelijke data analyseren in SQL

CASE-expressie

Query

SELECT
  CASE
    WHEN meal_price < 4 THEN 'Low-price meal'
    WHEN meal_price < 6 THEN 'Mid-price meal'
    ELSE 'High-price meal'
  END AS price_category,
  COUNT(DISTINCT meal_id)
FROM meals
GROUP BY price_category;
Zakelijke data analyseren in SQL

Binning - query

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 'Low-revenue users' WHEN revenue < 300 THEN 'Mid-revenue users' ELSE 'High-revenue users' END AS revenue_group, COUNT(DISTINCT user_id) AS users FROM user_revenues GROUP BY revenue_group;
Zakelijke data analyseren in SQL

Binning - resultaat

revenue_group       users
------------------  -----
Low-revenue users   473
Mid-revenue users   606
High-revenue users  225
Zakelijke data analyseren in SQL

Histogrammen vs. staafdiagrammen

Histogram van orders per gebruiker

Gebruikers per omzetgroep staafdiagram

Zakelijke data analyseren in SQL

Binning

Zakelijke data analyseren in SQL

Preparing Video For Download...