PostgreSQL 전용 절 및 함수
✒️ 2025-06-05 17:18 내용 수정
1. ILIKE
- 대소문자를 구별하지 않고 문자열 비교를 실행한다.
-- 부서명에 hr 또는 HR인 경우를 조회
SELECT * FROM employees WHERE department ILIKE 'hr';
2. DISTINCT ON
- 참고 자료 : Geeksforgeeks PostgreSQL - DISTINCT ON expression
- DISTINCT로 중복을 제거한 데이터 중 첫 번째 행의 데이터를 반환한다.
- 중복 제거 대상을 여러 개 전달하여 각 속성별로 그룹화할 수 있다.
ORDER BY절을 사용하여 정렬한 결과 중 첫 번째 데이터를 반환하기 때문에 반드시 정렬 조건을 줘야 한다.
SELECT DISTINCT ON (컬럼이름1, 컬럼이름2, ...)
컬럼이름1, 컬럼이름2, ...
FROM 테이블이름
ORDER BY 컬럼이름;
SELECT DISTINCT ON (genre) id, title, genre
FROM movie_list
ORDER BY genre ASC;
3. DATE_PART
- 참고 자료 : PostgreSQL Date/Time Functions and Operators, PostgreSQL Date/Time Functions
- Date나 Timestamp에서 년(Year), 월(Month), 일(Day)를 추출한다.
| 매개변수 | 설명 |
|---|---|
year |
년 |
month |
월 |
day |
일 |
hour |
시 |
minute |
분 |
second |
초 |
SELECT DATE_PART('month', TIMESTAMP '2025-06-04 15:30:00');
SELECT DATE_PART('year', DATE '2025-06-04');
- Oracle과 MySQL에서도 지원하는
EXTRACT()함수를 사용해서 추출할 수 있다.
SELECT EXTRACT(MONTH FROM DATE '2025-06-03');
4. FILTER
- 참고 자료 : datacamp PostgreSQL FILTER
- 집계 함수(
SUM,COUNT등)에 조건을 추가하여 특정 조건을 만족하는 행만 집계에 포함 시키는 절이다.
SELECT 집계함수(컬럼이름) FILTER(WHERE 조건절) FROM 테이블이름;
SELECT COUNT(*) FILTER(WHERE status = 'active') AS active_users
FROM all_users;