IntermediateDate & Time Functions
Find the busiest day of week for orders
The query
SQL
SELECT
TO_CHAR(order_date, 'Day') AS day_name,
EXTRACT(DOW FROM order_date) AS day_number,
COUNT(*) AS order_count,
ROUND(AVG(total), 2) AS avg_order_value,
SUM(total) AS total_revenue
FROM orders
WHERE status = 'completed'
GROUP BY TO_CHAR(order_date, 'Day'), EXTRACT(DOW FROM order_date)
ORDER BY day_number;Note
“DOW: 0=Sunday, 1=Monday, ..., 6=Saturday. GROUP BY both name and number to sort correctly.