File tree Expand file tree Collapse file tree 1 file changed +54
-0
lines changed Expand file tree Collapse file tree 1 file changed +54
-0
lines changed Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments