https://2stndard.tistory.com/notice/203
[발간예정][EPL과 유튜브로 배우는 DuckDB] 실습 코드와 데이터
EPL과 유튜브 데이터로 배우는 DuckDB에서 사용되는 실습 데이터와 코드를 제공합니다. EPL_DATA&samplefile.zip : 책에서 사용하는 영국 프리미어리그 데이터 셋과 샘플로 사용하는 파일espn.duckdb.zip : 책
2stndard.tistory.com
[DuckDB] 데이터 분석 생산성을 높여주는 SQL 핵심 문법 정리
최근 데이터 분석 및 OLAP 엔진으로 각광받고 있는 DuckDB는 기존 표준 SQL의 번거로움을 해결해주는 강력한 'Syntactic Sugar(편의 문법)'를 제공합니다.
1. EXCLUDE (특정 컬럼 제외하기)
- DuckDB:
SELECT * EXCLUDE (컬럼명) - 용도: 수십 개의 컬럼 중 보안이나 불필요한 정보만 쏙 빼고 싶을 때 사용합니다.
FROM teams
SELECT * EXCLUDE (teamId, abbreviation);
2. REPLACE (일부 컬럼 값만 수정하기)
- DuckDB:
SELECT * REPLACE (새로운로직 AS 컬럼명) - 용도: 전체 구조는 유지하면서 특정 컬럼의 단위 변환이나 로직 변경이 필요할 때 유용합니다.
FROM teams
SELECT * EXCLUDE (teamId, abbreviation) RENAME (location AS 위치, name AS 이름);
3. DOUBLE COLON (간결한 타입 캐스팅)
- DuckDB:
컬럼명::데이터타입 - 용도:
CAST함수를 길게 적지 않아도 되어 쿼리가 간결해집니다.
SELECT strptime('01-march-2025', '%d-%B-%Y')::DATE AS "DATE";
4. SELECT DISTINCT ON (중복 제거의 단순화)
- DuckDB:
SELECT DISTINCT ON (기준컬럼) * - 용도: 특정 키값의 첫 번째 행만 가져오고 싶을 때 윈도우 함수 없이 구현 가능합니다.
5. GROUP BY ALL (자동 그룹화)
- DuckDB:
GROUP BY ALL - 용도: 집계 함수를 제외한 모든 컬럼을 자동으로 인식하여 그룹화합니다.
FROM fixtures
SELECT seasonType, leagueId, homeTeamId, homeTeamWinner, count(*)
WHERE seasonType = 12654
GROUP BY ALL
6. QUALIFY 절 (윈도우 함수 필터링)
- DuckDB:
QUALIFY 조건식 - 용도: 윈도우 함수의 결과값에 조건을 걸기 위해 CTE나 서브쿼리를 만들 필요가 없습니다.
FROM k_de_hun
SELECT country, title, COUNT(*) AS "차트 일수"
GROUP BY CUBE (title, country)
HAVING
country IN ('US', 'KR')
QUALIFY
ROW_NUMBER() OVER (PARTITION BY country ORDER BY "차트 일수" DESC) <= 5;
7. UNION BY NAME (컬럼 이름 기준 결합)
- DuckDB:
UNION ALL BY NAME - 용도: 테이블 간 컬럼 순서가 달라도 이름만 같으면 알아서 매칭해줍니다.
(FROM 'D:/book/duckdb/ESPN/playerStats_data/playerStats_2024_UEFA.CHAMPIONS.CSV'
SELECT seasonType, year, league, teamId
LIMIT 5)
UNION ALL BY NAME
(FROM 'D:/book/duckdb/ESPN/playerStats_data/playerStats_2024_UEFA.EURO.CSV'
SELECT teamId, league, year, seasonType, athleteId
LIMIT 5);
'EPL과 유튜브 데이터로 배우는 DuckDB' 카테고리의 다른 글
| DuckDB의 오브젝트 스토리지 캐싱(Object-Store Caching) (0) | 2026.05.13 |
|---|---|
| DuckDB와 다른 DB 비교해보기 (0) | 2026.05.09 |
| SQL 효율을 높이는 DuckDB 전용 SQL - Part 4 (0) | 2026.05.06 |
| SQL 효율을 높이는 DuckDB 전용 SQL - Part 3 (0) | 2026.05.05 |
| SQL 효율을 높이는 DuckDB 전용 SQL - Part 2 (0) | 2026.05.04 |
댓글