SELECT [컬럼명]
FROM [테이블명]
SELECT *
FROM gmv_trend;
SELECT yyyy, gmv
FROM gmv_trend;
중복 제거
SELECT DISTINCT *
집계 전 데이터를 필터링
WHERE [조건]
<>
, !=
, =
, >=
, <=
, <
, >
IN (a, ~, b)
, NOT IN (a, ~, b)
BETWEEN a AND b
, NOT BETWEEN a AND b
LIKE '%~%'
, NOT LIKE '%~%'
특정 문자열 포함/불포함ILIKE '%~%'
, NOT ILIKE '%~%'
*영어일 경우 알파벳 대소문자 구분하지 않음IS NULL
, IS NOT NULL
SELECT *
FROM gmv_trend
where yyyy=2022;
SELECT *
FROM gmv_trend
WHERE yyyy<>2017;
SELECT *
FROM gmv_trend
WHERE category NOT LIKE '%패션';
SELECT *
FROM gmv_trend
WHERE category IN ('가전·전자·통신기기', '사무·문구', '패션용품 및 액세서리');
SELECT *
FROM gmv_trend
WHERE (gmv < 50000 OR gmv >1000000) AND yyyy=2021;
GROUP BY [컬럼명 or 컬럼 순서]
SELECT category, yyyy, SUM(gmv) AS gmv
FROM gmv_trend
GROUP BY category, yyyy;
SUM(gmv) AS gmv
SELECT category, yyyy "year", SUM(gmv) AS gmv
FROM gmv_trend
GROUP BY category, yyyy;
SELECT category, yyyy "year", SUM(gmv) gmv
FROM gmv_trend
GROUP BY 1, 2; --집계함수 컬럼 수까지 입력
SELECT category, yyyy "year", SUM(gmv) gmv
FROM gmv_trend
WHERE category = "컴퓨터 및 주변기기'
GROUP BY 1, 2;
집계 후 조건을 필터링
HAVING [집계함수 조건절]
집계함수의 종류
- SUM, MIN, MAX, AVG ...
SELECT category, SUM(gmv) gmv
FROM gmv_trend
WHERE yyyy=2021
GROUP BY 1
HAVING SUM(gmv) >= 1000000;
ORDER BY [컬럼명 or 컬럼순서]
SELECT *
FROM gmv_trend
ORDER BY category, yyyy, mm, platform_type;
SELECT yyyy, mm, SUM(gmv) gmv
FROM gmv_trend
GROUP BY 1,2
ORDER BY gmv, yyyy, mm;
SELECT yyyy, mm, SUM(gmv) gmv
FROM gmv_trend
WHERE yyyy>=2018
GROUP BY 1,2
ORDER BY 1 DESC, 2 ASC;
불러올 데이터 수 제한
LIMIT [숫자]
필요한 정보가 각기 다른 테이블에 분산 저장되어 있을 때, 하나의 테이블로 가져와 데이터를 추출하기 위해 사용
JOIN [테이블2] ON [테이블1.KEY = 테이블2.KEY]
유형 | 조인 결과 | 필요 상황 |
---|---|---|
(INNER) JOIN | 두 개의 테이블에 모두 존재하는 행만 남음 | 두 개의 테이블에 JOIN KEY가 빠짐없이 있을 때 |
LEFT JOIN | 왼쪽 테이블을 기준으로 오른쪽 테이블을 연결 오른쪽 테이블에 조인되는 값이 없는 경우 null로 표기) | 한 개 이상의 테이블에 JOIN KEY의 값이 비어있거나, 테이블 1에 있는 값이 테이블 2에는 없을 때 |
RIGHT JOIN | 오른쪽 테이블을 기준으로 오른쪽 테이블을 연결 왼쪽 테이블에 조인되는 값이 없는 경우 null로 표기) | 대부분 LEFT JOIN을 사용 |
FULL JOIN | 모든 값이 합쳐짐 |
SELECT c.cate1, c.cate2, c.cate3, i.item_name, SUM(gmv) AS gmv
FROM online_order oo
JOIN item i ON oo.itemid = i.id
JOIN category c ON i.category_id = c.id
ORDER BY gmv DESC
SELECT ui.gender, ui.age_band, SUM(gmv) gmv
FROM online_order oo
LEFT JOIN user_info ui ON oo.userid = ui.userid
GROUP BY 1,2
ORDER BY 1,2;