-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path3.7_Weekdays & Weekends.sql
More file actions
40 lines (38 loc) · 1.1 KB
/
3.7_Weekdays & Weekends.sql
File metadata and controls
40 lines (38 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
WITH day_metrics AS (
SELECT
TO_CHAR(order_date, 'FMDay') AS day_name,
CASE
WHEN EXTRACT(DOW FROM order_date) IN (0,6) THEN 'Weekend'
ELSE 'Weekday'
END AS day_type,
COUNT(*) AS num_orders,
SUM(total_sales) AS total_sales,
SUM(gross_profit) AS total_profit
FROM sales
GROUP BY
TO_CHAR(order_date, 'FMDay'),
CASE
WHEN EXTRACT(DOW FROM order_date) IN (0,6) THEN 'Weekend'
ELSE 'Weekday'
END
)
SELECT
day_name,
day_type,
num_orders,
total_sales,
total_profit,
ROUND(100.0 * num_orders / SUM(num_orders) OVER (), 1) AS pct_of_orders,
ROUND(100.0 * total_profit / SUM(total_profit) OVER (), 1) AS pct_of_profit
FROM day_metrics
ORDER BY
-- Ensure Monday→Sunday order
CASE day_name
WHEN 'Monday' THEN 1
WHEN 'Tuesday' THEN 2
WHEN 'Wednesday' THEN 3
WHEN 'Thursday' THEN 4
WHEN 'Friday' THEN 5
WHEN 'Saturday' THEN 6
WHEN 'Sunday' THEN 7
END;