Input Tokens
0
Output Tokens
0
Duration
0
Cost
0
Context
Input
For each dealership, rank employees by total sales amount in descending order. In the results I want to see dealership_name, employee_name , total_sales and sales_rank
Expected output
SELECT d.name AS dealership_name, e.name AS employee_name, SUM(s.sale_price) AS total_sales, RANK() OVER (PARTITION BY d.branch_id ORDER BY SUM(s.sale_price) DESC) AS sales_rank FROM sales s JOIN employees e ON s.employee_id = e.employee_id JOIN dealerships d ON s.branch_id = d.branch_id GROUP BY d.name, e.name, d.branch_id;
Model output
WITH EmployeeSales AS (
SELECT
e.branch_id,
e.employee_id,
e.name AS employee_name,
SUM(s.sale_price) AS total_sales
FROM employees AS e
JOIN sales AS s
ON e.employee_id = s.employee_id
GROUP BY
e.branch_id,
e.employee_id, e.name
), RankedSales AS (
SELECT
branch_id,
employee_name,
total_sales,
RANK() OVER (PARTITION BY branch_id ORDER BY total_sales DESC) AS sales_rank
FROM EmployeeSales
)
SELECT
d.name AS dealership_name,
rs.employee_name,
rs.total_sales,
rs.sales_rank
FROM RankedSales AS rs
JOIN dealerships AS d
ON rs.branch_id = d.branch_id
ORDER BY
dealership_name,
sales_rank;