🐬 SQL/🏆 MySQL 문제풀이

🔓 03. 집계, CASE, JOIN 문 리트코드 문제풀이

nyamin9 2023. 10. 10. 11:55

모바일은 화면을 돌려 가로화면으로 보시는 게 읽으시기 편할 수 있습니다. 돌려서 보시는 걸 추천드릴게요!! 

 

 


🔑 Q181. EMPLOYEES EARNING MORE THAN THEIR MANAGERS

 

☑️ 문제

 

☑️ 풀이

- 쿼리 목표 : INNER JOIN을 사용해 담당 매니저보다 많은 급여를 받는 ID값 매핑 후 추출 

SELECT EMPLOYEE.NAME AS Employee 
FROM EMPLOYEE
INNER JOIN EMPLOYEE AS MANAGER ON EMPLOYEE.MANAGERID = MANAGER.ID
WHERE EMPLOYEE.SALARY > MANAGER.SALARY;

 


🔑 Q183. CUSTOMERS WHO NEVER ORDER

 

☑️ 문제

 

☑️ 풀이

- 쿼리 목표 : LEFT JOIN을 사용해 주문자 목록에 없는 고객 추출 - LEFT JOIN의 대표적인 예시임!! 

SELECT NAME AS Customers
FROM CUSTOMERS
LEFT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMERID
WHERE CUSTOMERID IS NULL;

 


🔑 Q197. RISING TEMPERATURE

 

☑️ 문제

 

☑️ 풀이

- 쿼리 목표 : 날짜 연산 함수를 사용해 하루 전의 기온과 오늘의 기온 비교 후 추출

SELECT TODAY.ID
FROM WEATHER AS YESTERDAY
INNER JOIN WEATHER AS TODAY 
ON YESTERDAY.RECORDDATE = DATE_ADD(TODAY.RECORDDATE, INTERVAL -1 DAY)
WHERE YESTERDAY.TEMPERATURE < TODAY.TEMPERATURE;

 

☑️ 날짜 연산 함수 DATE_ADD / DATE_SUB

 


⛔ Q1179. REFORMAT DEPARTMENT TABLE

 

 

☑️ 문제

 

☑️ 풀이

- 쿼리 목표 : CASE 문을 사용해 피벗 테이블 생성

- NULL 값과 NULL이 아닌 값이 있을 때, 단순 합을 구하는 경우 SUM( ) 함수 사용하기

SELECT ID,
SUM(CASE WHEN MONTH = 'Jan' THEN REVENUE ELSE NULL END) AS 'Jan_Revenue',
SUM(CASE WHEN MONTH = 'Feb' THEN REVENUE ELSE NULL END) AS 'Feb_Revenue',
SUM(CASE WHEN MONTH = 'Mar' THEN REVENUE ELSE NULL END) AS 'Mar_Revenue',
SUM(CASE WHEN MONTH = 'Apr' THEN REVENUE ELSE NULL END) AS 'Apr_Revenue',
SUM(CASE WHEN MONTH = 'May' THEN REVENUE ELSE NULL END) AS 'May_Revenue',
SUM(CASE WHEN MONTH = 'Jun' THEN REVENUE ELSE NULL END) AS 'Jun_Revenue',
SUM(CASE WHEN MONTH = 'Jul' THEN REVENUE ELSE NULL END) AS 'Jul_Revenue',
SUM(CASE WHEN MONTH = 'Aug' THEN REVENUE ELSE NULL END) AS 'Aug_Revenue',
SUM(CASE WHEN MONTH = 'Sep' THEN REVENUE ELSE NULL END) AS 'Sep_Revenue',
SUM(CASE WHEN MONTH = 'Oct' THEN REVENUE ELSE NULL END) AS 'Oct_Revenue',
SUM(CASE WHEN MONTH = 'Nov' THEN REVENUE ELSE NULL END) AS 'Nov_Revenue',
SUM(CASE WHEN MONTH = 'Dec' THEN REVENUE ELSE NULL END) AS 'Dec_Revenue'
FROM DEPARTMENT
GROUP BY ID;