01. GROUP BY절
02. HAVING절
03. ORDER BY절
01. GROUP BY절
용도 : 일반적으로 특정 그룹(포지션별, 팀별)별 데이터를 필요로 할 경우에 GROUP BY절을 그룹함수와 함께 이용한다.
GROUP BY절 이용시, SELECT에 지정한 칼럼은 GROUP BY절에 모두 포함해야 한다.
SELECT [DISTINCT] 컬럼명 [ALIAS명] FROM 테이블명 [WHERE 조건식] GROUP BY 컬럼이나 표현식; |
*그룹함수
->다중 행 함수의 일종으로 여러 행들의 그룹이 모여서 단 하나의 결과를 돌려주는 함수를 말한다.
->WHERE절에서는 GROUP BY를 위해 사용하는 그룹함수를 절대 사용할 수가 없다. (So, HAVING절 사용함)
ⓐCOUNT(a) : a행(row)의 개수를 돌려준다.
ⓑMAX(a) : a행 (row)의 최대값을 돌려준다.
ⓒAVG(a) : a행 (row)의 평균값을 돌려준다.
ex) 선수들의 포지션별 평균키는?
SELECT POSITION, AVG(HEIGHT)
FROM PLAYER
GROUP BY POSITION;
ex)특정 팀 선수들의 포지션 별 인원은 어떻게 되는가?
SELECT POSITION, COUNT(PLAYER_NAME)
FROM PLAYER
WHERE TEAM_ID='K02'
GROUP BY POSITION;
02. HAVING절
SELECT [DISTINCT] 컬럼명 [ALIAS명] FROM 테이블명 [WHERE 조건식] GROUP BY 컬럼이나 표현식 HAVING 그룹조건식; |
-WHERE절 : SELECT ~ FROM절에서 발췌된 데이터에 대한 제한조건을 부여하여 필요한 데이터만을 조회할 때 사용하는 조건절
-HAVING절 : 그룹함수를 사용해 GROUP BY절을 사용할 때 그룹들에 대한 제한 조건이 필요하여 사용하는, 그룹에 대한 조건절
=> 즉, SELECT의 조건은 WHERE절, GROUP BY절의 조건은 HAVING절이다.
-HAVING절이 있을 떄의 수행되는 순서
①WHERE : 발췌 대상 데이터가 아닌 것은 제거
②GROUP BY : 행들을 그룹화하고,
③GROUP FUNCTION : 그룹함수를 적용한다.
④HAVING : 마지막으로 그룹함수값의 조건에 맞는 것만 발췌하여 출력.
03. ORDER BY절
SELECT [DISTINCT] 컬럼명 [ALIAS명] FROM 테이블명 [WHERE 조건식] [GROUP BY 컬럼이나 표현식 HAVING 그룹조건식] ORDER BY 칼럼이나 표현식[ASC 또는 DESC]; |
-데이터를 보여줄 땐 정렬을 해야 보는 사람이 편하게 볼 수 있으며, 결과에 대한 분석을 빨리 할 수 있다.
-이를 가능케 하는 것이 ORDERY BY절로, 조회된 결과의 데이터들을 정렬하여 보기 좋게 만들어준다.
-기본적으로 ORDER BY는 오름차순 정렬이 되어 ASC 생략이 가능하다.
-또한 모든 절을 다 이용한다면, 작성 순서는 다음과 같다.
WHERE절->GROUP BY절->ORDER BY절
-ORDER BY절에서는 SELECT문에서 조회한다고 지정한 모든 항목을 입력가능하다.
(AVG, COUNT 같은 함수든, 칼럼이든)
ex)한국 팀에 소속된 선수의 포지션, 선수이름, 등 번호를 조회하라. 단, 포지션, 선수이름 순으로 정렬하라.
SELECT POSITION, PLAYER_NAME, BACK_NO
FROM PLAYER
WHERE TEAM_ID='K02'
ORDER BY POSITION, PLAYER_NAME;
->포지션으로 정렬한 후, 같은 포지션일 경우 선수이름 순으로 정렬된다.
출처: https://pliss.tistory.com/8 [Pliss]
'JAVA HTML JAVASCRIPT > DB' 카테고리의 다른 글
PostgreSQL 설치 및 접속(pgdmin4, shell) 방법 (윈도우 10) (0) | 2021.04.09 |
---|---|
LEFT / RIGHT / OUTER / INNER JOIN (0) | 2020.07.30 |
[오라클] 데이터 중복제거 방법 (distinct, group by, 성능) (0) | 2020.07.30 |
PostgreSQL 설치 DB생성 (0) | 2020.02.05 |
PostgreSQL 설치 및 확인 (0) | 2020.02.05 |