๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿค– ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„

(76)
[SQL] ํ•ด์ปค๋žญํฌ(HackerRank) Medium - Occupations Q. Pivot the Occupation column in OCCUPATIONS so that each Name is sorted alphabetically and displayed underneath its corresponding Occupation. The output column headers should be Doctor, Professor, Singer, and Actor, respectively. Note: Print NULL when there are no more names corresponding to an occupation. # Solution -> ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ sub query๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ง„ํ–‰ํ–ˆ๋Š”๋ฐ ํ‹€๋ ธ๋‹ค๊ณ  ๋‚˜์˜ด.. select case when occupation oc..
[SQL] ํ•ด์ปค๋žญํฌ(HackerRank) Easy - Type of Triangles Q. Write a query identifying the type of each record in the TRIANGLES table using its three side lengths. Output one of the following statements for each record in the table: Equilateral: It's a triangle with 3 sides of equal length. Isosceles: It's a triangle with 2 sides of equal length. Scalene: It's a triangle with 3 sides of differing lengths. Not A Triangle: The given values of A, B, and C..
[SQL] ํ•ด์ปค๋žญํฌ(HackerRank) Easy - Employee Salaries Q. Write a query that prints a list of employee names (i.e.: the name attribute) for employees in Employee having a salary greater than $2000 per month who have been employees for less than 10 months. Sort your result by ascending employee_id. # Solution select name from employee where salary >2000 and months
[SQL] ํ•ด์ปค๋žญํฌ(HackerRank) Easy - Weather Observation Station 7 Q. Query the list of CITY names ending with vowels (a, e, i, o, u) from STATION. Your result cannot contain duplicates. # Solution select distinct city from station where right (city,1) in ('a','e','i','o','u') -> city ์ด๋ฆ„์˜ ๊ธธ์ด๊ฐ€ ๊ฐ์ž ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— right() ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ํ•˜๋‚˜๊ฐ€ ํ•ด๋‹น ๋ชจ์Œ์— ์žˆ๋Š”์ง€๋กœ ํ•„ํ„ฐ์ ์šฉ SELECT DISTINCT CITY FROM STATION WHERE CITY LIKE('%a') OR CITY LIKE('%e') OR CITY LIKE('%i') OR CITY LIKE('%o..
[SQL] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.4 - ๊ทธ๋ฃน๋ณ„ ์กฐ๊ฑด์— ๋งž๋Š” ์‹๋‹น ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ Q. MEMBER_PROFILE์™€ REST_REVIEW ํ…Œ์ด๋ธ”์—์„œ ๋ฆฌ๋ทฐ๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ์ž‘์„ฑํ•œ ํšŒ์›์˜ ๋ฆฌ๋ทฐ๋“ค์„ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ํšŒ์› ์ด๋ฆ„, ๋ฆฌ๋ทฐ ํ…์ŠคํŠธ, ๋ฆฌ๋ทฐ ์ž‘์„ฑ์ผ์ด ์ถœ๋ ฅ๋˜๋„๋ก ์ž‘์„ฑํ•ด์ฃผ์‹œ๊ณ , ๊ฒฐ๊ณผ๋Š” ๋ฆฌ๋ทฐ ์ž‘์„ฑ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ, ๋ฆฌ๋ทฐ ์ž‘์„ฑ์ผ์ด ๊ฐ™๋‹ค๋ฉด ๋ฆฌ๋ทฐ ํ…์ŠคํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”. # Solution ์›๋ž˜ sub query ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ review id count๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ํšŒ์›์„ ์งค๋ผ์„œ ํ–ˆ๋Š”๋ฐ..ํ‹€๋ ธ๋‹ค๊ณ  ๋‚˜์˜ด.. ์ด๋ ‡๊ฒŒ join์ ˆ์„ where์ ˆ์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋‹ˆ ์ •๋‹ต์œผ๋กœ ๋‚˜์˜ด. # ๋‹ค๋ฅธ์‚ฌ๋žŒ ์ฝ”๋“œ -> Group by, Rank, join, sub query, order by ๋‹ค ์‚ฌ์šฉํ–ˆ๊ธธ๋ž˜ ๊ฐ€์ ธ์™€๋ด„ SELECT B.MEMBER_NAME, A.REVIEW_TEXT, A.RE..
[SQL] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.2 - ์žฌ๊ตฌ๋งค๊ฐ€ ์ผ์–ด๋‚œ ์ƒํ’ˆ๊ณผ ํšŒ์› ๋ฆฌ์ŠคํŠธ ๊ตฌํ•˜๊ธฐ (Having) Q. ONLINE_SALE ํ…Œ์ด๋ธ”์—์„œ ๋™์ผํ•œ ํšŒ์›์ด ๋™์ผํ•œ ์ƒํ’ˆ์„ ์žฌ๊ตฌ๋งคํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌํ•˜์—ฌ, ์žฌ๊ตฌ๋งคํ•œ ํšŒ์› ID์™€ ์žฌ๊ตฌ๋งคํ•œ ์ƒํ’ˆ ID๋ฅผ ์ถœ๋ ฅํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ๊ฒฐ๊ณผ๋Š” ํšŒ์› ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์‹œ๊ณ  ํšŒ์› ID๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ƒํ’ˆ ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”. # Solution -> ์žฌ๊ตฌ๋งค๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๋ฏ€๋กœ having์„ ์‚ฌ์šฉํ•˜์—ฌ online_sale_id๊ฐ€ 2 ์ด์ƒ์ธ๊ฒƒ๋งŒ ์ฐพ๋Š”๋‹ค. SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE GROUP BY USER_ID, PRODUCT_ID HAVING COUNT(ONLINE_SALE_ID) > 1 ORDER BY USER_ID ASC, PRODUCT_ID DESC https://school.programmer..
[SQL] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.4 - ์ฃผ๋ฌธ๋Ÿ‰์ด ๋งŽ์€ ์•„์ด์Šคํฌ๋ฆผ๋“ค ์กฐํšŒํ•˜๊ธฐ Q. 7์›” ์•„์ด์Šคํฌ๋ฆผ ์ด ์ฃผ๋ฌธ๋Ÿ‰๊ณผ ์ƒ๋ฐ˜๊ธฐ์˜ ์•„์ด์Šคํฌ๋ฆผ ์ด ์ฃผ๋ฌธ๋Ÿ‰์„ ๋”ํ•œ ๊ฐ’์ด ํฐ ์ˆœ์„œ๋Œ€๋กœ ์ƒ์œ„ 3๊ฐœ์˜ ๋ง›์„ ์กฐํšŒํ•˜๋Š” SQL ๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. # Solution -> ๋ฌธ์ œ ์„ค๋ช…์—์„œ ID๋Š” ๋‹ค๋ฅด์ง€๋งŒ ๊ฐ™์€ ๋ง›์˜ ์•„์ด์Šคํฌ๋ฆผ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•จ. (july table ์—์„œ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ฐ™์€ flavor ์ง€๋งŒ shipment_id๊ฐ€ ๋‹ค๋ฆ„) ์ฆ‰ JULYํ…Œ์ด๋ธ”์—์„œ ์ค‘๋ณต๋˜์–ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๊ธฐ ๋•Œ๋ฌธ์— sub query๋กœ GROUP BY ๋จผ์ € ์ง„ํ–‰ ํ›„ JOIN SELECT F.FLAVOR FROM FIRST_HALF F JOIN (SELECT FLAVOR, SUM(TOTAL_ORDER) AS TOTAL FROM JULY GROUP BY FLAVOR) J ON F.FLAVOR= J.FLAVOR ORDER B..
[SQL] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.3 - ์ฆ๊ฒจ์ฐพ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์‹๋‹น ์ •๋ณด ์ถœ๋ ฅํ•˜๊ธฐ (rank() over) Q. REST_INFO ํ…Œ์ด๋ธ”์—์„œ ์Œ์‹์ข…๋ฅ˜๋ณ„๋กœ ์ฆ๊ฒจ์ฐพ๊ธฐ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์‹๋‹น์˜ ์Œ์‹ ์ข…๋ฅ˜, ID, ์‹๋‹น ์ด๋ฆ„, ์ฆ๊ฒจ์ฐพ๊ธฐ์ˆ˜๋ฅผ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ์Œ์‹ ์ข…๋ฅ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•ด์ฃผ์„ธ์š”. # Solution -> ๊ฐ food type ๋ณ„๋กœ favorites ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ๊ฒƒ์„ list up ํ•ด์•ผํ•˜๋ฏ€๋กœ rank() over ( partition by ~ order by~ ) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆœ์œ„๋ฅผ ๋จผ์ € ์„ธ์šฐ๊ณ  1์œ„๋งŒ์„ ๊ฐ€์ ธ์˜ค๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM ( SELECT *, RANK() OVER (PARTITION BY A.FOOD_TYPE ORDER BY A.FAVORITES DESC) AS RA..