Analyzing Business Data in SQL
Michel Semaan
Data Scientist
WITH user_orders AS ( SELECT user_id, COUNT(DISTINCT order_id) AS orders FROM orders GROUP BY user_id)
SELECT ROUND( PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY orders ASC) :: NUMERIC, 2) AS orders_p25, ROUND( PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY orders ASC) :: NUMERIC, 2) AS orders_p50, ROUND( PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY orders ASC) :: NUMERIC, 2) AS orders_p75, ROUND(AVG(orders) :: NUMERIC, 2) AS avg_orders FROM user_orders;
orders_p25 orders_p50 orders_p75 avg_orders
---------- ---------- ---------- ----------
6.00 8.00 11.00 8.70
Analyzing Business Data in SQL