-
Notifications
You must be signed in to change notification settings - Fork 43
/
article-views-i.sql
70 lines (58 loc) · 1.66 KB
/
article-views-i.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
/*
Table: Views
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| article_id | int |
| author_id | int |
| viewer_id | int |
| view_date | date |
+---------------+---------+
There is no primary key for this table, it may have duplicate rows.
Each row of this table indicates that some viewer viewed an article (
written by some author) on some date.
Note that equal author_id and viewer_id indicate the same person.
Write an SQL query to find all the authors that viewed at
least one of their own articles, sorted in ascending order by their id.
The query result format is in the following example:
Views table:
+------------+-----------+-----------+------------+
| article_id | author_id | viewer_id | view_date |
+------------+-----------+-----------+------------+
| 1 | 3 | 5 | 2019-08-01 |
| 1 | 3 | 6 | 2019-08-02 |
| 2 | 7 | 7 | 2019-08-01 |
| 2 | 7 | 6 | 2019-08-02 |
| 4 | 7 | 1 | 2019-07-22 |
| 3 | 4 | 4 | 2019-07-21 |
| 3 | 4 | 4 | 2019-07-21 |
+------------+-----------+-----------+------------+
Result table:
+------+
| id |
+------+
| 4 |
| 7 |
+------+
*/
# V0
SELECT
DISTINCT author_id as id
FROM
Views
where author_id = viewer_id
ORDER BY
author_id;
# V1
# https://code.dennyzhang.com/article-views-i
select distinct author_id as id
from Views
where author_id = viewer_id
order by author_id
# V2
# Time: O(nlogn)
# Space: O(n)
SELECT DISTINCT author_id AS id
FROM views
WHERE author_id = viewer_id
ORDER BY id