[๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 5
ยท
๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/์‚ฌ์ „์บ ํ”„ ๊ณผ์ œ
Lv4. ๊ฐ€์žฅ ๋†’์€ ์›”๊ธ‰์„ ๋ฐ›๋Š” ์ง์›์€?  ๋‚ด๊ฐ€ ํ‹€๋ฆฐ/๋†“์นœ ๋ถ€๋ถ„์€ ๋ฏผํŠธ์ƒ‰์œผ๋กœ ํ‘œ์‹œ!  1. ๊ฐ ์ง์›์˜ ์ด๋ฆ„, ๋ถ€์„œ, ์›”๊ธ‰, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ง์›์ด ์†ํ•œ ๋ถ€์„œ์—์„œ ๊ฐ€์žฅ ๋†’์€ ์›”๊ธ‰์„ ๋ฐ›๊ณ  ์žˆ๋Š” ์ง์›์˜ ์ด๋ฆ„๊ณผ ์›”๊ธ‰์„ ์กฐํšŒํ•˜๋Š” SQL ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๋‚˜์˜ ๋‹ตselect e2.Name, e2.Department, e2.Salary, sub.Top_Earner, sub.Top_Salaryfrom Employees e2 JOIN(select e.Department, e.Name Top_Earner, a.Top_salaryfrom Employees e join (select Department, max(Salary) Top_salaryfrom Employeesgroup by Department) a on e.Depar..
[๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 4
ยท
๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/์‚ฌ์ „์บ ํ”„ ๊ณผ์ œ
Lv4. ๋‹จ๊ณจ ๊ณ ๊ฐ๋‹˜ ์ฐพ๊ธฐ ๋‚ด๊ฐ€ ํ‹€๋ฆฐ/๋†“์นœ ๋ถ€๋ถ„์€ ๋ฏผํŠธ์ƒ‰์œผ๋กœ ํ‘œ์‹œ!  1. ๊ณ ๊ฐ๋ณ„๋กœ ์ฃผ๋ฌธ ๊ฑด์ˆ˜์™€ ์ด ์ฃผ๋ฌธ ๊ธˆ์•ก์„ ์กฐํšŒํ•˜๋Š” SQL ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.  a. ์ถœ๋ ฅ ๊ฒฐ๊ณผ์—๋Š” ๊ณ ๊ฐ ์ด๋ฆ„, ์ฃผ๋ฌธ ๊ฑด์ˆ˜, ์ด ์ฃผ๋ฌธ ๊ธˆ์•ก์ด ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ์ฃผ๋ฌธ์„ ํ•œ ์ ์ด ์—†๋Š” ๊ณ ๊ฐ๋„ ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.๋‚˜์˜ ๋‹ตSelect CustomerName, count(o.OrderID) OrderCount, sum(o.TotalAmount) TotalSpentFrom Customers c LEFT JOIN Orders o ON c.CustomerID = o.CustomerIDGroup by 1์ •๋‹ตSELECT c.CustomerName, COUNT(o.OrderID) AS OrderCount, COALESCE(SUM(o.Tot..
[๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 3
ยท
๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/์‚ฌ์ „์บ ํ”„ ๊ณผ์ œ
Lv3. ์ด์šฉ์ž์˜ ํฌ์ธํŠธ ์กฐํšŒํ•˜๊ธฐ ๋‚ด๊ฐ€ ํ‹€๋ฆฐ/๋†“์นœ ๋ถ€๋ถ„์€ ๋ฏผํŠธ์ƒ‰์œผ๋กœ ํ‘œ์‹œ!  ์ƒํ™ฉ: ์ด๋ฒˆ์—๋Š” ์ด์šฉ์ž๋“ค ๋ณ„๋กœ ํš๋“ํ•œ ํฌ์ธํŠธ๋ฅผ ํ•™์ƒ๋“ค์—๊ฒŒ ์ด๋ฉ”์ผ๋กœ ๋ณด๋‚ด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•œ ์ž๋ฃŒ๋ฅผ ๊ฐ€๊ณตํ•ด๋ด…์‹œ๋‹ค. ํŠนํžˆ users ํ…Œ์ด๋ธ”์—๋Š” ์žˆ์œผ๋‚˜ point_users ์—๋Š” ์—†๋Š” ์œ ์ €๊ฐ€ ์žˆ์–ด์š”. ์ด ์œ ์ €๋“ค์˜ ๊ฒฝ์šฐ point๋ฅผ 0์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ์‹œ๋‹ค.๋‚˜์˜ ๋‹ตselect u.user_id, u.email, coalesce(p.point,0) pointfrom users u left join point_users p on u.user_id=p.user_idorder by 3 desc์ •๋‹ตSELECT u.user_id, u.email, COALESCE(p.point,0) as pointFROM users uleft JOIN point..
[๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 2
ยท
๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/์‚ฌ์ „์บ ํ”„ ๊ณผ์ œ
Lv2. ๋‚ ์งœ๋ณ„ ํš๋“ํฌ์ธํŠธ ์กฐํšŒํ•˜๊ธฐ๋‚ด๊ฐ€ ํ‹€๋ฆฐ/๋†“์นœ ๋ถ€๋ถ„์€ ๋ฏผํŠธ์ƒ‰์œผ๋กœ ํ‘œ์‹œ! ์ƒํ™ฉ:  ์ด๋ฒˆ์—๋Š” ์ด์šฉ์ž๋“ค์ด ์ž˜ ํ™œ๋™ํ•˜๊ณ  ์žˆ๋Š”์ง€ ๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ํฌ์ธํŠธ๊ฐ€ ๋งŽ์„์ˆ˜๋ก ํ™œ๋™์„ ์ž˜ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ ์งœ๋ณ„๋กœ ํš๋“ํ•œ ํฌ์ธํŠธ๊ฐ€ ์ ์  ๋Š˜์–ด๋‚˜๋Š”์ง€ ์ค„์–ด๋“œ๋Š”์ง€ ํ™•์ธํ•ด ๋ด…์‹œ๋‹ค.๋‚˜์˜ ๋‹ตselect date(created_at) created_at,round(avg(point), 0) average_pointsfrom point_usersgroup by 1์ •๋‹ตSELECTDATE(p.created_at) AS created_at,ROUND(AVG(p.point)) AS average_pointsFROMpoint_users pGROUP BYDATE(p.created_at);์˜ค๋‹ต ๋…ธํŠธ-๊ณ ๋ฏผํ•œ ์ ์ดˆ๋‹จ์œ„๋กœ ํ‘œ์‹œ๋˜์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ..
[๋‹ฌ๋ฆฌ๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 1
ยท
๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/์‚ฌ์ „์บ ํ”„ ๊ณผ์ œ
Lv1. ๋ฐ์ดํ„ฐ ์† ๊น€์„œ๋ฐฉ ์ฐพ๊ธฐ ๋‚ด๊ฐ€ ํ‹€๋ฆฐ/๋†“์นœ ๋ถ€๋ถ„์€ ๋ฏผํŠธ์ƒ‰์œผ๋กœ ํ‘œ์‹œ!  ์ƒํ™ฉ : ์—ฌ๋Ÿฌ๋ถ„๋“ค์€ ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ์˜ ๋ถ„์„๊ฐ€๋กœ ์ทจ์งํ–ˆ์Šต๋‹ˆ๋‹ค. DBeaver๋ฅผ ํ…Œ์ŠคํŠธ ํ•ด๋ณผ ๊ฒธ “๊น€”์”จ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ด์šฉ์ž๋“ค ์ˆ˜๋ฅผ ์„ธ์–ด ๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.๋‚˜์˜ ๋‹ต 1select count(*) name_cntfrom userswhere name like '๊น€%'; ๋‚˜์˜ ๋‹ต 2select count(*) name_cntfrom userswhere substr(name,1,1)='๊น€'์ •๋‹ตSELECT count(distinct(user_id)) as name_cntFROM userswhere substr(name,1,1) = '๊น€'์˜ค๋‹ต ๋…ธํŠธ1. ๋‚ด์žฅํ•จ์ˆ˜๋ž€ ๋ฌด์—‡์ธ๊ฐ€ TIL์— ์ •๋ฆฌํ•˜๊ธฐ2. ์ด์šฉ์ž ์ˆ˜๋ฅผ ์„ธ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ distinct๋ฅผ ์‚ฌ์šฉํ•ด์„œ ..
[๊ฑท๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 11_๋งˆ์ง€๋ง‰ ์—ฐ์Šต ๋ฌธ์ œ
ยท
๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/์‚ฌ์ „์บ ํ”„ ๊ณผ์ œ
๋งˆ์ง€๋ง‰ ์—ฐ์Šต ๋ฌธ์ œ! - ์ƒํ’ˆ & ์ฃผ๋ฌธ ํ…Œ์ด๋ธ”๋‚ด๊ฐ€ ํ‹€๋ฆฐ/๋†“์นœ ๋ถ€๋ถ„์€ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œ! 44. ๋ชจ๋“  ์ฃผ๋ฌธ์˜ ์ฃผ๋ฌธ ID์™€ ์ฃผ๋ฌธ๋œ ์ƒํ’ˆ์˜ ์ด๋ฆ„์„ ๋‚˜์—ดํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!๋‚˜์˜ ๋‹ตSelect o.id, p.name From orders o inner join products p on o.id=p.product_id;์ •๋‹ต SELECT o.id, p.name FROM orders o JOIN products p ON o.product_id = p.id; ์˜ค๋‹ต ๋…ธํŠธjoin์€ ๊ธฐ๋ณธ์ ์œผ๋กœ inner join๊ณผ ๋™์ผํ•˜๋‹ค.๊ณ ๋ฏผํ•œ ์ -  45. ์ด ๋งค์ถœ(price * quantity์˜ ํ•ฉ)์ด ๊ฐ€์žฅ ๋†’์€ ์ƒํ’ˆ์˜ ID์™€ ํ•ด๋‹น ์ƒํ’ˆ์˜ ์ด ๋งค์ถœ์„ ๊ฐ€์ ธ์˜ค๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!๋‚˜์˜ ๋‹ตSelect p.id,  max(p.pirce *..
[๊ฑท๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 10
ยท
๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/์‚ฌ์ „์บ ํ”„ ๊ณผ์ œ
10) ์ด์   ํ…Œ์ด๋ธ”์ด 2๊ฐœ์ž…๋‹ˆ๋‹ค - ์ง์› & ๋ถ€์„œ ํ…Œ์ด๋ธ” 38. ํ˜„์žฌ ์กด์žฌํ•˜๊ณ  ์žˆ๋Š” ์ด ๋ถ€์„œ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!๋‚˜์˜ ๋‹ตSelect count(distinct name) From departments;์ •๋‹ต SELECT COUNT(*) FROM departments; ์˜ค๋‹ต ๋…ธํŠธํ˜„์žฌ ์กด์žฌํ•˜๊ณ  ์žˆ๋Š” ๋ถ€์„œ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ ค๋ฉด, ์ง€์ •๋œ ์ปฌ๋Ÿผ์ด null๊ฐ’์ด ์žˆ์œผ๋ฉด ์•ˆ๋˜๋‹ˆ๊นŒ Count์•ˆ์— *๋ณด๋‹ค name์ด ๋งž๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€์š”!?๊ณ ๋ฏผํ•œ ์ -  39. ๋ชจ๋“  ์ง์›๊ณผ ๊ทธ๋“ค์ด ์†ํ•œ ๋ถ€์„œ์˜ ์ด๋ฆ„์„ ๋‚˜์—ดํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!๋‚˜์˜ ๋‹ตSelect e.name, d.nameFrom employees e left join departments d on e.department_id=d.id;์ •๋‹ต SELECT e.name, d..
[๊ฑท๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 9
ยท
๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/์‚ฌ์ „์บ ํ”„ ๊ณผ์ œ
9) ์•„ํ”„๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค! ํ•ญ์ƒ ๊ฑด๊ฐ• ์ฑ™๊ธฐ์„ธ์š”! - ํ™˜์ž ํ…Œ์ด๋ธ” 34. patients ํ…Œ์ด๋ธ”์—์„œ ๊ฐ ์„ฑ๋ณ„(gender)์— ๋”ฐ๋ฅธ ํ™˜์ž ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!๋‚˜์˜ ๋‹ตSelect gender, count(1) From patients Group by gender; ์ •๋‹ต SELECT gender, COUNT(*) FROM patients GROUP BY gender; ์˜ค๋‹ต ๋…ธํŠธ-๊ณ ๋ฏผํ•œ ์ -  35. patients ํ…Œ์ด๋ธ”์—์„œ ํ˜„์žฌ ๋‚˜์ด๊ฐ€ 40์„ธ ์ด์ƒ์ธ ํ™˜์ž๋“ค์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”! ๋‚˜์˜ ๋‹ตSelect count(*) From patients Where birth_date ์ •๋‹ต SELECT COUNT(*) FROM patients WHERE birth_date ์˜ค๋‹ต ๋…ธํŠธ-๊ณ ๋ฏผํ•œ ์ -  3..
[๊ฑท๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 8
ยท
๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/์‚ฌ์ „์บ ํ”„ ๊ณผ์ œ
8) LOL์„ ํ•˜๋‹ค๊ฐ€ ํ™ง๋ณ‘์ด ๋‚˜์„œ ๋ณ‘์›์„ ์ฐพ์•„์™”์Šต๋‹ˆ๋‹ค. - ์˜์‚ฌ ํ…Œ์ด๋ธ” 30. doctors ํ…Œ์ด๋ธ”์—์„œ ์ „๊ณต(major)๊ฐ€ ์„ฑํ˜•์™ธ๊ณผ์ธ ์˜์‚ฌ์˜ ์ด๋ฆ„์„ ์•Œ์•„๋‚ด๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!๋‚˜์˜ ๋‹ตSelect name From doctors Where major='์„ฑํ˜•์™ธ๊ณผ'; ์ •๋‹ต SELECT name FROM doctors WHERE major = ‘์„ฑํ˜•์™ธ๊ณผ’; ์˜ค๋‹ต ๋…ธํŠธ-๊ณ ๋ฏผํ•œ ์ -  31. doctors ํ…Œ์ด๋ธ”์—์„œ ๊ฐ ์ „๊ณต ๋ณ„ ์˜์‚ฌ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”! ๋‚˜์˜ ๋‹ตSelect major, count(1) major_count From doctors Group by major; ์ •๋‹ต SELECT major, COUNT(*) FROM doctors GROUP BY major; ์˜ค๋‹ต ๋…ธํŠธ-๊ณ ๋ฏผํ•œ ์ -  3..
[๊ฑท๊ธฐ๋ฐ˜] SQL ๋ฌธ๋ฒ• ์—ฐ์Šต 7
ยท
๋‚ด์ผ๋ฐฐ์›€์บ ํ”„/์‚ฌ์ „์บ ํ”„ ๊ณผ์ œ
7) ๋žญํฌ๊ฒŒ์ž„ ํ•˜๋‹ค๊ฐ€ ์‹ธ์›Œ์„œ ํ”ผ๋“œ๋ฐฑ ๋‚จ๊ฒผ์–ด์š”... - LOL ํ”ผ๋“œ๋ฐฑ ํ…Œ์ด๋ธ” 25. lol_feedbacks ํ…Œ์ด๋ธ”์—์„œ ๋งŒ์กฑ๋„ ์ ์ˆ˜(satisfaction_score)์— ๋”ฐ๋ผ ํ”ผ๋“œ๋ฐฑ์„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!๋‚˜์˜ ๋‹ตselect * from lol_feedbacks order by satisfaction_score desc;์ •๋‹ต SELECT id, user_name, satisfaction_score, feedback_date FROM lol_feedbacks ORDER BY satisfaction_score DESC; ์˜ค๋‹ต ๋…ธํŠธ-๊ณ ๋ฏผํ•œ ์ ํŠน์ •ํ•œ ์ปฌ๋Ÿผ๋งŒ ๋ถˆ๋Ÿฌ์˜ค๋ž€ ๋ง์ด ์—†์œผ๋ฉด ์ „์ฒด ์กฐํšŒ๋กœ ์ž‘์„ฑํ•˜์ž!  26. lol_feedbacks ํ…Œ์ด๋ธ”์—์„œ ๊ฐ ์œ ์ €๋ณ„๋กœ ์ตœ์‹  ํ”ผ๋“œ๋ฐฑ์„ ์ฐพ๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ..