MySQL

MySQL) Instargram (2) : ์ธ์Šคํƒ€๊ทธ๋žจ ๋ฐ์ดํ„ฐ ๋ถ„์„ํ•˜๊ธฐ

567Rabbit 2024. 5. 17. 11:51

๋ฐ์ดํ„ฐ ๋ถ„์„ํ•˜๊ธฐ

 

-- ์œ ์ € ์ค‘์—์„œ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ํšŒ์› ๋‹ค์„ฏ๋ช…์„ ์ฐพ์œผ์„ธ์š”

select *
from users
order by created_at asc
limit 5;

 


-- ํšŒ์›๊ฐ€์ž…์„ ๊ฐ€์žฅ ๋งŽ์ด ํ•˜๋Š” ์š”์ผ์€ ๋ฌด์Šจ์š”์ผ??

select dayname(created_at) as dayname, count(id) as count
from users
group by dayname
order by count desc;

 


-- ํšŒ์›๊ฐ€์ž…์€ ํ–ˆ์ง€๋งŒ, ์‚ฌ์ง„์€ ํ•œ๋ฒˆ๋„ ์˜ฌ๋ฆฌ์ง€ ์•Š์€ ์œ ๋ นํšŒ์›๋“ค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค์‹œ์˜ค

select *
from users u
left join photos p
on u.id = p.user_id
where p.image_url is null ;


-- ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ์‚ฌ์ง„์€ ๋ฌด์—‡์ธ์ง€ ์ฐพ์•„์„œ ๊ทธ ์‚ฌ์ง„์˜ ์œ ์ €์ด๋ฆ„, ์ด๋ฏธ์ง€์ฃผ์†Œ, ์ข‹์•„์š” ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด์„ธ์š”

select u.username, p.image_url , count(l.photo_id) as like_count
from photos p
join likes l
on p.id = l.photo_id
join users u
on p.user_id = u.id
group by l.photo_id
order by like_count desc
limit 1;

 

-- ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ ํ•ด์‹œํƒœ๊ทธ์˜ ์ด๋ฆ„์€ ๋ฌด์—‡์ด๋ฉฐ, ๋ช‡๊ฐœ๋‚˜ ์‚ฌ์šฉ๋˜์—ˆ๋Š”์ง€ ๋‚˜ํƒ€๋‚ด์‹œ์˜ค
-- ์ฆ‰ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ ํ•ด์‹œํƒœ๊ทธ์˜ ์ด๋ฆ„, ๊ฐฏ์ˆ˜๋ฅผ ํ‘œ์‹œํ•˜์‹œ์˜ค

select t.tag_name, count(pt.tag_id) as tag_count
from photo_tags pt
join tags t
on pt.tag_id = t.id
group by tag_id
order by tag_count desc
limit 1;