GROUP BY 절, HAVING절 특징
1) GROUP BY 절에서는 ALIAS명을 사용할 수 없다.
2) WHERE 절은 전체 데이터를 GROUP으로 나누기 전에 행들을 미리 제거시킨다.
3) HAVING 절은 일반적으로 GROUP BY 절 뒤에 위치한다.
4) GROUP BY, HAVING 절에는 SELECT 절에 정의되지 않은 컬럼은 사용 못함
5) 집계함수 WHERE절에 올 수 없다. GROUP BY 통해 소그룹별 기준 정한 후, SELECT절에서 집 계함수 사용
💥 ORDER BY 절을 SELECT 절에 정의되지 않은 컬럼 사용 가능
Order by 특징
기본적인 정렬순서는 오름차순 (ASC)이다. cf. 내림차순(DESC)
숫자 오름차순 - 가장 작은 값부터 출력
날짜 오름차순 - 가장 날짜값 빠른 값이 먼저 출력
⭐ Oracle - NULL을 가장 큰 값으로 간주
⭐ SQL Server - NULL을 가장 작은 값
💡 ORDER BY 절에서는 칼럼명, ALIAS명, 칼럼순서 같이 혼용해서 사용 가능
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; (X) WHERE ROWNUM <= N; (O) WHERE ROWNUM < N+1; (O)
💡 sql server
SELECT TOP(2) WITH TIES ENAME, SAL
(1위 한명, 공동2위가 2명있을 때 WITH TIES 조건 추가하면 결과 3건 출력됨. WITH TIES 없으면 결과 2건 출력됨)
JOIN
두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것
EQUI JOIN
➡ 2개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용
➡ where 절에 join 조건 “=”연산자 사용해서 표현
ex) WHERE PLAYER.TEAM_ID = TEAM.TEAM_ID AND PLAYER.POSITION = 'GK';
ex) FROM PLAYER INNER JOIN TEAM ON PLAYER.TEAM_ID = TEAM.TEAM_ID WHERE PLAYER.POSITION = 'GK';
NON EQUI JOIN
➡ 2개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하지 않는 경우에 사용
➡ BETWEEN, >, >=, <, <= 등의 연산자 사용해 JOIN
ex) WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL;
'자격증 > SQLD' 카테고리의 다른 글
SQLD 요약 - (7) SQL활용_뷰,그룹함수,윈도우함수 (0) | 2021.05.25 |
---|---|
SQLD 요약 - (6) SQL활용_JOIN, 계층형질의,서브쿼리 (0) | 2021.05.25 |
SQLD 요약 - (4) SQL기본_연산자,함수 (0) | 2021.05.25 |
SQLD 요약 - (3) SQL기본_TABLE,DML,DCL,DDL,TCL (0) | 2021.05.24 |
SQLD 요약 - (2) 데이터 모델과 성능 (0) | 2021.05.24 |
댓글