모바일은 화면을 돌려 가로화면으로 보시는 게 읽으시기 편할 수 있습니다. 돌려서 보시는 걸 추천드릴게요!!
⛔ Q1. TYPE OF TRIANGLE
☑️ 문제
☑️ 풀이
- 쿼리 목표 : CASE WHEN 문을 사용하여 정삼각형, 이등변삼각형, 삼각형, 삼각형을 이루지 못하는 조건 생성
SELECT
CASE
WHEN (A + B <= C) OR (A + C <= B) OR (C + B <= A) THEN 'Not A Triangle'
WHEN (A = B) AND (B = C) THEN 'Equilateral'
WHEN (A = B) OR (B = C) OR (A = C) THEN 'Isosceles'
ELSE 'Scalene'
END AS TRIANGLE
FROM TRIANGLES;
🔑 Q2. REVISING AGGREGATIONS - THE COUNT FUNCTION
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 인구 수가 십만명이 넘는 도시의 수 추출
SELECT COUNT(NAME) FROM CITY WHERE POPULATION > 100000;
🔑 Q3. REVISING AGGREGATIONS - THE SUM FUNCTION
☑️ 문제
☑️ 풀이
- 쿼리 목표 : DISTRICT가 California인 도시의 인구 수 합계 추출
SELECT SUM(POPULATION) FROM CITY WHERE DISTRICT = 'California';
🔑 Q4. REVISING AGGREGATIONS - AVERAGES
☑️ 문제
☑️ 풀이
- 쿼리 목표 : DISTRICT가 California인 도시의 인구 수 평균 추출
SELECT AVG(POPULATION) FROM CITY WHERE DISTRICT = 'California';
🔑 Q5. AVERAGE POPULATION
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 인구 수의 평균 추출 및 내림 연산
SELECT FLOOR(AVG(POPULATION)) FROM CITY;
🔑 Q6. JAPAN POPULATION
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 일본 도시의 인구수 합계 추출
SELECT SUM(POPULATION) FROM CITY WHERE COUNTRYCODE = 'JPN';
🔑 Q7. POPULATION DENSITY DIFFERENCE
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 인구 수의 (최대치 - 최소치) 연산
SELECT MAX(POPULATION) - MIN(POPULATION) FROM CITY;
🔑 Q8. THE BLUNDER
☑️ 문제
☑️ 풀이
- 쿼리 목표 : (정상 급여의 평균 - 비정상 급여의 평균) 연
SELECT CEIL(AVG(SALARY) - AVG(REPLACE(SALARY, '0', ''))) FROM EMPLOYEES;
⛔ Q9. TOP EARNERS
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 최대 임금 및 최대 임금 수령자 수 추출
SELECT (MONTHS * SALARY), COUNT(NAME)
FROM EMPLOYEE
GROUP BY (MONTHS * SALARY)
ORDER BY (MONTHS * SALARY) DESC LIMIT 1;
🔑 Q10. WEATHER OBSERVATION STATION 2
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 위도, 경도 합계 추출
SELECT ROUND(SUM(LAT_N), 2), ROUND(SUM(LONG_W), 2) FROM STATION;
🔑 Q11. WEATHER OBSERVATION STATION 13
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 조건을 만족하는 위도, 경도 합계 추출
SELECT ROUND(SUM(LAT_N), 4) FROM STATION
WHERE LAT_N BETWEEN 38.7880 AND 137.2345;
🔑 Q12. WEATHER OBSERVATION STATION 14
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 조건을 만족하는 위도, 경도 최대치 추출
SELECT ROUND(MAX(LAT_N), 4) FROM STATION
WHERE LAT_N < 137.2345;
🔑 Q13. WEATHER OBSERVATION STATION 15
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 조건을 만족하는 위도, 경도 추출
SELECT ROUND(LONG_W, 4) FROM STATION
WHERE LAT_N < 137.2345
ORDER BY LAT_N DESC LIMIT 1;
🔑 Q14. WEATHER OBSERVATION STATION 16
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 조건을 만족하는 위도, 경도 추출
SELECT ROUND(MIN(LAT_N), 4) FROM STATION WHERE LAT_N > 38.7780;
🔑 Q15. WEATHER OBSERVATION STATION 17
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 조건을 만족하는 위도, 경도 최대치 추출
SELECT ROUND(LONG_W, 4)
FROM STATION
WHERE LAT_N > 38.7780
ORDER BY LAT_N LIMIT 1;
🔑 Q16. WEATHER OBSERVATION STATION 18
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 위도, 경도의 맨해튼 거리 연산
SELECT ROUND(ABS(MIN(LAT_N) - MAX(LAT_N)) + ABS(MIN(LONG_W) - MAX(LONG_W)), 4)
FROM STATION;
🔑 Q17. WEATHER OBSERVATION STATION 19
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 위도, 경도의 유클리드 거리 연산
SELECT ROUND(SQRT(POWER((MIN(LAT_N) - MAX(LAT_N)), 2)
+ POWER((MIN(LONG_W) - MAX(LONG_W)), 2)), 4)
FROM STATION;
🔑 Q18. POPULATION CENSUS
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 조인을 통한 아시아 대륙 도시의 인구 수 합계 연산
SELECT SUM(CITY.POPULATION)
FROM CITY
INNER JOIN COUNTRY ON CITY.COUNTRYCODE = COUNTRY.CODE
WHERE CONTINENT = 'Asia';
🔑 Q19. AFRICAN CITIES
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 조인을 통한 아프리카 대륙 도시의 이름 추출
SELECT CITY.NAME
FROM CITY
INNER JOIN COUNTRY ON CITY.COUNTRYCODE = COUNTRY.CODE
WHERE CONTINENT = 'Africa';
🔑 Q20. AVERAGE POPULATION OF EACH CONTINENT
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 조인을 통한 대륙 별 도시의 인구 수 평균 연산
SELECT CONTINENT, FLOOR(AVG(CITY.POPULATION))
FROM CITY
INNER JOIN COUNTRY ON CITY.COUNTRYCODE = COUNTRY.CODE
GROUP BY CONTINENT;
⛔ Q21. SYMMETRIC PAIRS
☑️ 문제
☑️ 풀이
- 쿼리 목표 : 데이터 중에서 서로 SYMMETRIC한 행 추출
/* 풀이 1
데이터에서 X와 Y가 같지 않거나, 중복된 행이 있는 경우만 SYMMETRIC을 만족할 가능성이 있음
따라서 이를 제외한 경우를 필터링한 임시 데이터 TEMP 생성
그 뒤 SYMMETRIC의 조건을 WHERE 절에 사용하여 원하는 행만 출력
*/
WITH TEMP AS
(
SELECT X,Y
FROM FUNCTIONS
GROUP BY X,Y
HAVING COUNT(*) > 1 OR X != Y
)
SELECT T1.X, T1.Y
FROM TEMP AS T1
INNER JOIN TEMP AS T2 ON T1.X = T2.Y AND T1.Y = T2.X
WHERE T1.X < T1.Y OR T1.X = T1.Y
ORDER BY T1.X;
/* 풀이 2
같은 X,Y를 가지고 있는 두 행으로 이뤄진 SYMMETRIC과
다른 X,Y를 가지고 있는 두 행으로 이뤄진 SYMMETRIC을 각각 찾아
UNION
*/
-- 1. Find SYMMETRIC in two rows with the same X and Y: 13 13
SELECT X,Y
FROM FUNCTIONS
GROUP BY X,Y
HAVING COUNT(*) = 2
UNION
-- 2. Find SYMMETRIC in two rows with the each other X and Y: 20 21 / 21 20
SELECT F1.X, F1.Y
FROM FUNCTIONS AS F1
INNER JOIN FUNCTIONS AS F2 ON F1.X = F2.Y AND F1.Y = F2.X
WHERE F1.X < F1.Y
ORDER BY X;
📌 피드백
- 중복 열이 있는 데이터 간의 INNER JOIN : 어떤 테이블의 열인지 명시해서 쿼리할 것 (CITY.NAME)
- ROUND IT UP : 올림 (CEIL)
- 중복 데이터 쿼리문
SELECT column, COUNT(column)
FROM table
GROUP BY column
HAVING COUNT(column) > 1;
📣 SQL 배지 4 STAR 달성
'🐬 SQL > 🏆 MySQL 문제풀이' 카테고리의 다른 글
🔓 06. 프로그래머스 LEVEL4, 5 문제풀이 (0) | 2023.11.11 |
---|---|
🔓 05. 프로그래머스 LEVEL3 문제풀이 (0) | 2023.10.27 |
🔓 04. 프로그래머스 LEVEL2 문제풀이 (0) | 2023.10.25 |
🔓 03. 집계, CASE, JOIN 문 리트코드 문제풀이 (0) | 2023.10.10 |
🔓 01. SELECT 문 해커랭크 문제풀이 (2) | 2023.10.08 |