정리노트 (SQL)
이것저것 모음들 ..
* COUNT(*) OVER(PARTITION BY 컬럼명 : 그룹단위로 나누어 카운트한 결과 출력
* SELECT AS - : 테이블 또는 테이블의 열에 대해 임시로 이름 변경
* GROUP BY ; 그룹으로 나누어 데이터 출력 ( where 절 과 order by 사이에 위치 )
* HAVING : 그룹바이 한 결과를 대상으로 필터링 ( GROUP BY 절 다음에 위치 )
—> SELECT * FROM TABLE WHERE - GROUP BY - HAVING - ORDER BY -
* SELECT - OFFSET 숫자 : 몇번째 row부터 출력할지 ( 1번째 row면 0 (시작할 행 - 1) )
* SELECT - FROM A LEFT OUTER JOIN B ON ~ : 먼저 표기된 좌측 테이블에 해당하는 데이터를 먼저 읽은 후, 나중 표기된 우측 테이블에서 JOIN 대상 데이터를 읽어온다. A, B 테이블 간 조인 조건이 맞지 않는 A 와 B 테이블의 레코드 중 A 테이블의 레코드는 무조건 결과값에 포함되어 나온다.
— LEFT : 왼쪽기준, 왼쪽 테이블은 무조건 나옴
* CASE 컬럼명or표현식 WHEN 조건식1 THEN 결과1 WHEN 조건식2 THEN 결과2 ELSE 결과 END ( CASE문은 반드시 END로 끝, 결과는 NULL 사용 안됨 )
* UNION (ALL) : 조회한 다수의 select문을 하나로 합침 (컬럼의 개수, 데이터타입 동일해야 함)
- union : 중복되는 행은 하나만 표시
- union all : 중복제거를 하지 않고 모두 표시
* REPLACE(대상구문or컬럼명, 찾을무장,바꿀문장) : 대상구문or컬럼명에서 찾을문장을 바꿀문장으로 replace
- 바꿀문장 값이 생략되었을 경우, 찾을문장 제거하여 반환
* WITH RECURSIVE view명 AS
(초기 sql
UNION ALL 반복할 sql + 반복을 멈출 where절
) select * from view명
* trim(both ‘ ‘ from 컬럼) : 공백제거 (both는 양쪽을 의미), ‘오른쪽공백’ 컬럼 ’왼쪽공백’ -> 컬럼
* PARTITION BY 컬럼 : 테이블분할함수(그룹화할 컬럼선택), 컬럼을 기준으로 그룹을 나눈다(group by 느낌)
* OVER() : partition by한 데이터를 정렬
* ROW_NUMBER() : 데이터를 그룹화하여 중복허용없이 순서매김
* BETWEEN A AND B : A <= data <= B
* CAST(컬럼 as int) : 데이터 타입변환
- cast(컬럼 as 변환할 타입)
* STRING_AGG(컬럼,’,’) AS A : 멀티값을 싱글값으로 반환
- 컬럼 값이 1 2 3 4 5 면 1,2,3,4,5로 반환