심심한잉여의 잡동사니

[SQLD] SQL기본 GROUP BY, ROWNUM, JOIN 본문

자격증/SQLD

[SQLD] SQL기본 GROUP BY, ROWNUM, JOIN

심심한잉여 2022. 5. 10. 11:29
반응형

GROUP BY 절, HAVING절 특징
 - GROUP BY 절에서는 ALIAS명을 사용할 수 없다.
 - WHERE 절은 전체 데이터를 GROUP으로 나누기 전에 행들을 미리 제거시킨다.
 - HAVING 절은 일반적으로 GROUP BY 절 뒤에 위치한다.
 - GROUP BY, HAVING 절에는 SELECT 절에 정의되지 않은 컬럼은 사용 못한다.
 - 집계함수 WHERE절에 올 수 없다. GROUP BY를 통해 소그룹별 기준을 정한 후 , SELECT절에서 집계함수 사용

ORDER BY 특징
기본적인 정렬 순서는 오름차순(ASC)이며 내림차순은 DESC이다
숫자 오름차순 - 가장 작은 값부터 출력
날짜 오름차순 - 가장 날짜값 빠른 값이 먼저 출력

오라클 - NULL을 가장 큰 값으로 간주
SQL Server - NULL을 가장 작은 값으로 간주

SELECT 문장 실행 순서
SELECT ALIAS -> FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
메모리에 모든 컬럼을 올리므로 ORDER BY SELECT에 정의 안된 컬럼 사용 가능

ROWNUM(ORACLE)
WHERE 절에서 행의 개수를 제한하는 목적으로 사용

한 행만 가져오고 싶을 때
WHERE ROWNUM = 1; || WHERE ROWNUM <= 1; || WHERE ROWNUM <2;

두건 이상의 N행을 가져오고 싶을 때
WHERE ROWNUM <= N; || WHERE ROWNUM < N+1;

SQL Server
SELECT TOP(2) WITH TIES TEST
1위 1명 공동2위 2명이 있을 시 WITH TIES를 사용 하면 총 3명을 가져옴 없을 시 2명만 가져옴

JOIN
두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것

EQUI JOIN
 - 2개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용
 - WHERE 절에 JOIN whrjs "=" 연산자 사용해서 표현
 ex) WHERE TEST_TABLE.TEST_COL = TEST_TABLE2.TEST_COL2

NON EQUI JOIN
 - 2개의 테이블 간에 컬럼 값들이 서로 정확하게 일치하지 않는 경우에 사용
 - BETWEEN, >, >=, <, <= 등의 연산자를 사용해 JOIN

반응형

'자격증 > SQLD' 카테고리의 다른 글

[SQLD] 뷰, 그룹함수, 윈도우함수  (0) 2022.05.17
[SQLD] SQL활용 JOIN, 서브쿼리  (0) 2022.05.11
[SQLD] SQL기본 연산자, 함수  (0) 2022.05.09
[SQLD] DML,DCL,DDL,TCL  (0) 2022.05.06
[SQLD] 데이터 모델과 성능 -2  (0) 2022.05.05