-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathb-bonus-queries.sql
46 lines (42 loc) · 1.08 KB
/
b-bonus-queries.sql
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
41
42
43
44
45
46
/***************************
* Join All The Things *
***************************/
SELECT
s.customer_id,
order_date,
product_name,
price,
CASE
WHEN order_date >= join_date THEN 'Y'
ELSE 'N'
END AS member
FROM dannys_diner.sales AS s
LEFT JOIN dannys_diner.menu AS m ON s.product_id = m.product_id
LEFT JOIN dannys_diner.members AS m2 ON s.customer_id = m2.customer_id;
/***************************
* Rank All The Things *
***************************/
WITH is_member AS (
SELECT
s.customer_id,
order_date,
product_name,
price,
CASE
WHEN order_date >= join_date THEN 'Y'
ELSE 'N'
END AS member
FROM dannys_diner.sales AS s
LEFT JOIN dannys_diner.menu AS m ON s.product_id = m.product_id
LEFT JOIN dannys_diner.members AS m2 ON s.customer_id = m2.customer_id
)
SELECT
customer_id,
order_date,
product_name,
price,
CASE
WHEN member = 'N' THEN NULL
ELSE RANK() OVER(PARTITION BY customer_id, member ORDER BY order_date)
END AS ranking
FROM is_member;