SQL에서 HAVING COUNT
, LIMIT
, COALESCE
는 각각 그룹화된 데이터 필터링, 결과 제한, NULL 값을 처리하는 데 사용되는 중요한 문법이다. 각 문법에 대한 설명과 예제를 소개한다.
HAVING
절은 GROUP BY
절과 함께 사용되어 그룹화된 데이터에 대한 조건을 지정하는 데 사용된다. 주로 COUNT
, SUM
, AVG
등의 집계 함수와 함께 사용된다.
sales
테이블이 다음과 같다고 가정한다.
id | product | category | amount |
---|---|---|---|
1 | A | X | 100 |
2 | B | X | 150 |
3 | C | Y | 200 |
4 | D | Y | 250 |
5 | E | X | 300 |
다음 SQL 쿼리는 각 카테고리별로 두 개 이상의 제품을 가진 카테고리와 그 제품 수를 반환한다.
SELECT category, COUNT(*) as product_count
FROM sales
GROUP BY category
HAVING COUNT(*) >= 2;
category | product_count |
---|---|
X | 3 |
Y | 2 |
LIMIT
절은 쿼리 결과에서 반환되는 행의 수를 제한하는 데 사용된다. 주로 페이징이나 특정 수의 결과만 필요할 때 사용된다.
다음 SQL 쿼리는 sales
테이블에서 금액이 가장 큰 상위 두 개의 판매 기록을 반환한다.
SELECT *
FROM sales
ORDER BY amount DESC
LIMIT 2;
id | product | category | amount |
---|---|---|---|
5 | E | X | 300 |
4 | D | Y | 250 |
COALESCE
함수는 인수 중에서 첫 번째로 NULL이 아닌 값을 반환하는 데 사용된다. 여러 컬럼이나 표현식을 평가할 때 유용하다.
users
테이블이 다음과 같다고 가정한다.
id | first_name | middle_name | last_name |
---|---|---|---|
1 | John | NULL | Doe |
2 | NULL | Alice | Smith |
3 | Bob | NULL | NULL |
다음 SQL 쿼리는 사용자의 전체 이름을 반환한다. 중간 이름이 없으면 이름과 성을 결합하고, 이름이나 성이 없는 경우에도 이를 처리한다.
SELECT id,
COALESCE(first_name, middle_name, last_name) as name
FROM users;
id | name |
---|---|
1 | John |
2 | Alice |
3 | Bob |
COALESCE는 NULL 값을 특정 값으로 변환하는 데 사용하기도 한다.
employees
테이블이 다음과 같다고 가정한다.
id | first_name | middle_name | last_name | salary |
---|---|---|---|---|
1 | John | NULL | Doe | 50000 |
2 | NULL | Alice | Smith | NULL |
3 | Bob | NULL | NULL | 70000 |
다음 SQL 쿼리는 각 직원의 이름과 급여를 반환하며, 급여가 NULL인 경우 기본값으로 0을 반환한다.
SELECT id,
COALESCE(first_name, middle_name, last_name) as name,
COALESCE(salary, 0) as salary
FROM employees;
id | name | salary |
---|---|---|
1 | John | 50000 |
2 | Alice | 0 |
3 | Bob | 70000 |
이 예제는 COALESCE
를 사용하여 NULL 값을 특정 값(이 경우 0)으로 변환하는 방법을 보여준다. salary
컬럼에 NULL이 있을 경우, COALESCE(salary, 0)
는 0을 반환한다. 이는 데이터베이스 쿼리를 보다 유연하고 안전하게 만드는 데 유용하다.