Skip to content

Commit c9eaeaf

Browse files
authored
Create user-purchase-platform.sql
1 parent 3991f3e commit c9eaeaf

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

MySQL/user-purchase-platform.sql

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Time: O(n)
2+
# Space: O(n)
3+
4+
SELECT t1.spend_date,
5+
'both' AS platform,
6+
Sum(Ifnull(t.sum_amount, 0)) AS total_amount,
7+
Count(t.user_id) AS total_users
8+
FROM (SELECT spend_date,
9+
user_id,
10+
Sum(amount) AS sum_amount
11+
FROM spending
12+
GROUP BY spend_date,
13+
user_id
14+
HAVING Count(platform) = 2) AS t
15+
RIGHT JOIN (SELECT DISTINCT spend_date
16+
FROM spending) AS t1
17+
ON t.spend_date = t1.spend_date
18+
GROUP BY t1.spend_date
19+
UNION
20+
SELECT t2.spend_date,
21+
'mobile' AS platform,
22+
Sum(Ifnull(t.amount, 0)) AS total_amount,
23+
Count(t.user_id) AS total_users
24+
FROM (SELECT spend_date,
25+
user_id,
26+
platform,
27+
amount
28+
FROM spending
29+
GROUP BY spend_date,
30+
user_id
31+
HAVING Count(platform) < 2) AS t
32+
RIGHT JOIN (SELECT DISTINCT spend_date
33+
FROM spending) AS t2
34+
ON t.spend_date = t2.spend_date
35+
AND t.platform = 'mobile'
36+
GROUP BY t2.spend_date
37+
UNION
38+
SELECT t3.spend_date,
39+
'desktop' AS platform,
40+
Sum(Ifnull(t.amount, 0)) AS total_amount,
41+
Count(t.user_id) AS total_users
42+
FROM (SELECT spend_date,
43+
user_id,
44+
platform,
45+
amount
46+
FROM spending
47+
GROUP BY spend_date,
48+
user_id
49+
HAVING Count(platform) < 2) AS t
50+
RIGHT JOIN (SELECT DISTINCT spend_date
51+
FROM spending) AS t3
52+
ON t.spend_date = t3.spend_date
53+
AND t.platform = 'desktop'
54+
GROUP BY t3.spend_date

0 commit comments

Comments
 (0)