본문 바로가기
자격증/SQLD

SQLD 요약 - (5) SQL기본_GROUPBY, ROWNUM, JOIN

by 땅콩둘기 2021. 5. 25.
반응형

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;

 

반응형

댓글