JOIN
INNER JOIN
- 두 테이블에서 공통된 값을 가진 행을 반환할 때 사용
- 교집합 개념
SELECT *
FROM 테이블 1
INNER JOIN 테이블 2 ON 테이블 1.컬럼 = 테이블 2.컬럼;
OUTER JOIN
- 한쪽 테이블(기준 테이블)의 모든 행을 포함하고, 다른 테이블(조인 대상 테이블)에서 일치하는 행을 반환할 때 사용
LEFT JOIN
- 왼쪽 테이블(기준 테이블)의 모든 행을 포함하고, 오른쪽 테이블(조인 대상 테이블)에서 일치하는 행을 반환할 때 사용
- 오른쪽 테이블에서 일치하는 행이 없을 경우, NULL을 반환
SELECT *
FROM 기준 테이블
INNER JOIN 조인 대상 테이블 ON 기준 테이블.컬럼 = 조인 대상 테이블.컬럼;
RIGHT JOIN
- 오른쪽 테이블(기준 테이블)의 모든 행을 포함하고, 왼쪽 테이블(조인 대상 테이블)에서 일치하는 행을 반환할 때 사용
- 왼쪽 테이블에서 일치하는 행이 없을 경우, NULL을 반환
- 일반적으로 LEFT JOIN을 많이 사용
SELECT *
FROM 조인 대상 테이블
RIGHT JOIN 기준 테이블 ON 조인 대상 테이블.컬럼 = 기준 테이블.컬럼;
SELF JOIN
- 같은 테이블에서 다른 행끼리 비교하거나 연결할 때 사용
- 일반적으로 계층 구조, 상하 관계, 자기 참조 데이터를 조회할 때 사용
- 별칭(Alias)을 사용하여 테이블 구분
Function
날짜 처리
DATE(날짜/시간)
- 날짜/시간 데이터에서 날짜 부분만 추출할 때 사용
DATE_ADD(기준 날짜/시간, INTERVAL)
- 기준 날짜/시간에 기간을 더할 때 사용
- INTERVAL 단위
- SECOND : 초 단위
- MINUTE : 분 단위
- HOUR : 시간 단위
- DAY : 일 단위
- WEEK : 주 단위
- MONTH : 달 단위
- QUARTER : 분기 단위
- YEAR : 연 단위
- INTERVAL 단위
DATE_SUB(기준 날짜/시간, INTERVAL)
- 기준 날짜/시간에 기간을 뺄 때 사용
HackerRank & LeetCode
African Cities
SELECT city.name
FROM city
INNER JOIN country ON city.countrycode = country.code
WHERE country.continent = 'Africa'
Population Census
SELECT SUM(city.population)
FROM city
INNER JOIN country ON city.countrycode = country.code
WHERE country.continent = 'Asia';
Average Population of Each Continent
SELECT country.continent
, FLOOR(AVG(city.population))
FROM city
INNER JOIN country ON city.countrycode = country.code
GROUP BY country.continent;
Customers Who Never Order
SELECT Customers.name AS Customers
FROM Customers
LEFT JOIN Orders ON Customers.id = Orders.customerId
WHERE Orders.id IS NULL;
Employees Earning More Than Their Managers
SELECT A.name AS Employee
FROM Employee AS A
INNER JOIN Employee AS B ON A.managerId = B.id
WHERE A.salary > B.salary;
Rising Temperature
SELECT A.id AS Id
FROM Weather AS A
INNER JOIN Weather AS B ON DATE(A.recordDate) = DATE_ADD(B.recordDate, INTERVAL 1 DAY)
WHERE A.temperature > B.temperature;
'인프런 > [백문이불여일타] 데이터 분석을 위한 중급 SQL' 카테고리의 다른 글
| UNION (0) | 2025.08.30 |
|---|---|
| CASE (0) | 2025.08.28 |
| COUNT / SUM / AVG / MIN / MAX / GROUP BY (0) | 2025.08.27 |