용도 : 일반적으로 특정 그룹(포지션별, 팀별)별 데이터를 필요로 할 경우에 GROUP BY절을 그룹함수와 함께 이용한다.
GROUP BY절 이용시, SELECT에 지정한 칼럼은 GROUP BY절에 반드시 포함해야 한다.
SELECT [DISTINCT] 컬럼명 [ALIAS명] FROM 테이블명 [WHERE 조건식] GROUP BY 컬럼이나 표현식; |
다중 행 함수의 일종으로 여러 행들의 그룹이 모여서 단 하나의 결과를 돌려주는 함수를 말한다.
WHERE절에서는 GROUP BY를 위해 사용하는 그룹함수를 절대 사용할 수가 없다. (이러한 용도를 위해서는 HAVING절을 사용한다.)
샘플 1) 선수들의 포지션별 평균키는?
SELECT POSITION, AVG(HEIGHT)
FROM PLAYER
GROUP BY POSITION;
샘플 2)특정 팀 선수들의 포지션 별 인원은 어떻게 되는가?
SELECT POSITION, COUNT(PLAYER_NAME)
FROM PLAYER
WHERE TEAM_ID='K02'
GROUP BY POSITION;
SELECT [DISTINCT] 컬럼명 [ALIAS명] FROM 테이블명 [WHERE 조건식] GROUP BY 컬럼이나 표현식 HAVING 그룹조건식; |
WHERE절
SELECT ~ FROM절에서 발췌된 데이터에 대한 제한조건을 부여하여 필요한 데이터만을 조회할 때 사용하는 조건절
HAVING절
그룹함수를 사용해 GROUP BY절을 사용할 때 그룹들에 대한 제한 조건이 필요하여 사용하는, 그룹에 대한 조건절
즉, SELECT의 조건은 WHERE절, GROUP BY절의 조건은 HAVING절이다.
SELECT [DISTINCT] 컬럼명 [ALIAS명] FROM 테이블명 [WHERE 조건식] [GROUP BY 컬럼이나 표현식 HAVING 그룹조건식] ORDER BY 칼럼이나 표현식[ASC 또는 DESC]; |
데이터를 보여줄 땐 정렬을 해야 보는 사람이 편하게 볼 수 있으며, 결과에 대한 분석을 빨리 할 수 있다. 이를 가능케 하는 것이 ORDERY BY절로, 조회된 결과의 데이터들을 정렬하여 보기 좋게 만들어준다.
샘플 1) 한국 팀에 소속된 선수의 포지션, 선수이름, 등 번호를 조회하라. 단, 포지션, 선수이름 순으로 정렬하라.
SELECT POSITION, PLAYER_NAME, BACK_NO
FROM PLAYER
WHERE TEAM_ID='K02'
ORDER BY POSITION, PLAYER_NAME;
->포지션으로 정렬한 후, 같은 포지션일 경우 선수이름 순으로 정렬된다.