-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathselect-data.sql
More file actions
52 lines (43 loc) · 1.35 KB
/
Copy pathselect-data.sql
File metadata and controls
52 lines (43 loc) · 1.35 KB
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
SELECT * FROM users
ORDER BY created_at
LIMIT 5;
SELECT
DAYNAME(created_at) AS day,
COUNT(*) AS total
FROM users
GROUP BY day
ORDER BY total DESC
LIMIT 2;
SELECT username, "INACTIVE" AS STATUS
FROM users
LEFT JOIN photos
ON users.id = photos.user_id
WHERE photos.id IS NULL;
SELECT
username,
IF(photos.id IS NULL, "INACTIVE", "ACTIVE") AS STATUS
FROM users
LEFT JOIN photos
ON users.id = photos.user_id;
SELECT username, photos.id, REPLACE(SUBSTRING(image_url, 9), '.', ' '), COUNT(*) as likes FROM photos
JOIN likes ON likes.photo_id = photos.id
JOIN users ON photos.user_id = users.id
GROUP BY photos.id
ORDER BY likes DESC LIMIT 1;
-- if we use primary key then we can SELECT related, specific, unique data.
-- bcz primary_key is related to a specific, unique data - one value not full row
-- so we can get the related one row of data
SELECT username, COUNT(*) FROM users
JOIN photos ON users.id = photos.user_id
GROUP BY username; -- every user avg post
SELECT ROUND((SELECT COUNT(*) FROM photos) / (SELECT COUNT(*) FROM users))
AS avg_post;
-- avg post by our users
SELECT tag_name, COUNT(*) AS tag_count FROM photo_tags
JOIN tags ON photo_tags.tag_id = tags.id
GROUP BY tags.id
ORDER BY tag_count DESC LIMIT 5;
SELECT user_id, COUNT(*) FROM users
JOIN likes ON likes.user_id = users.id
GROUP BY user_id
HAVING COUNT(*) = (SELECT COUNT(*) FROM photos);