-
Notifications
You must be signed in to change notification settings - Fork 43
/
find-customers-with-positive-revenue-this-year.sql
73 lines (60 loc) · 1.7 KB
/
find-customers-with-positive-revenue-this-year.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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*
Find Customers With Positive Revenue this Year Problem
Description
LeetCode Problem 1821.
Table: Customers
+--------------+------+
| Column Name | Type |
+--------------+------+
| customer_id | int |
| year | int |
| revenue | int |
+--------------+------+
(customer_id, year) is the primary key for this table.
This table contains the customer ID and the revenue of customers in different years.
Note that this revenue can be negative.
Write an SQL query to report the customers with postive revenue in the year 2021.
Return the result table in any order.
The query result format is in the following example:
Customers
+-------------+------+---------+
| customer_id | year | revenue |
+-------------+------+---------+
| 1 | 2018 | 50 |
| 1 | 2021 | 30 |
| 1 | 2020 | 70 |
| 2 | 2021 | -50 |
| 3 | 2018 | 10 |
| 3 | 2016 | 50 |
| 4 | 2021 | 20 |
+-------------+------+---------+
Result table:
+-------------+
| customer_id |
+-------------+
| 1 |
| 4 |
+-------------+
Customer 1 has revenue equal to 30 in year 2021.
Customer 2 has revenue equal to -50 in year 2021.
Customer 3 has no revenue in year 2021.
Customer 4 has revenue equal to 20 in year 2021.
Thus only customers 1 and 4 have postive revenue in year 2021.
*/
# V0
SELECT customer_id
FROM customers
WHERE YEAR = 2021 AND revenue > 0;
# V1
# https://circlecoder.com/find-customers-with-positive-revenue-this-year/
select customer_id
from Customers
where year = 2021
group by customer_id,year
having sum(revenue) > 0
# V2
# Time: O(n)
# Space: O(n)
SELECT customer_id
FROM customers
WHERE YEAR = 2021 AND revenue > 0;