parent
44c87f299b
commit
aaa49b7fee
1 changed files with 72 additions and 0 deletions
@ -0,0 +1,72 @@ |
||||
--- |
||||
title: Monthly Sales Analysis |
||||
description: Practice using CASE expressions to analyze monthly book sales |
||||
order: 221 |
||||
type: challenge |
||||
setup: | |
||||
```sql |
||||
CREATE TABLE book_sale ( |
||||
id INT PRIMARY KEY, |
||||
sale_date DATE, |
||||
total_amount DECIMAL(10,2) |
||||
); |
||||
|
||||
INSERT INTO book_sale (id, sale_date, total_amount) VALUES |
||||
(1, '2024-01-15', 125.50), |
||||
(2, '2024-01-28', 85.99), |
||||
(3, '2024-02-03', 45.50), |
||||
(4, '2024-02-14', 225.00), |
||||
(5, '2024-02-28', 180.75), |
||||
(6, '2024-03-05', 95.25), |
||||
(7, '2024-03-15', 155.50), |
||||
(8, '2024-03-30', 320.00); |
||||
``` |
||||
--- |
||||
|
||||
The bookstore owner wants to analyze their sales data by month. They need a report showing monthly totals and sales performance. |
||||
|
||||
Given the following data in table `book_sale`: |
||||
|
||||
| sale_date | total_amount | |
||||
| ---------- | ------------ | |
||||
| 2024-01-15 | 125.50 | |
||||
| 2024-01-28 | 85.99 | |
||||
| 2024-02-03 | 45.50 | |
||||
| 2024-02-14 | 225.00 | |
||||
| 2024-02-28 | 180.75 | |
||||
| 2024-03-05 | 95.25 | |
||||
| 2024-03-15 | 155.50 | |
||||
| 2024-03-30 | 320.00 | |
||||
|
||||
Write a query that shows: |
||||
|
||||
- Month (formatted as 'Month YYYY') |
||||
- Total sales for the month |
||||
- Performance category: |
||||
- `Excellent` if monthly total > 500 |
||||
- `Good` if monthly total between 200 and 500 |
||||
- `Needs Improvement` if monthly total < 200 |
||||
|
||||
## Expected Output |
||||
|
||||
| month | total_sales | performance | |
||||
| ------------- | ----------- | ----------- | |
||||
| January 2024 | 211.49 | Good | |
||||
| February 2024 | 451.25 | Good | |
||||
| March 2024 | 570.75 | Excellent | |
||||
|
||||
## Solution |
||||
|
||||
```sql |
||||
SELECT |
||||
TO_CHAR(sale_date, 'Month YYYY') as month, |
||||
SUM(total_amount) as total_sales, |
||||
CASE |
||||
WHEN SUM(total_amount) > 500 THEN 'Excellent' |
||||
WHEN SUM(total_amount) >= 200 THEN 'Good' |
||||
ELSE 'Needs Improvement' |
||||
END as performance |
||||
FROM book_sale |
||||
GROUP BY TO_CHAR(sale_date, 'Month YYYY'), DATE_TRUNC('month', sale_date) |
||||
ORDER BY DATE_TRUNC('month', sale_date); |
||||
``` |
Loading…
Reference in new issue