Base/Database

[Database] ORDER BY 절,GROUP BY 절 함수 사용법 (Oracle SQL)

반응형

ORDER BY

 

검색된 데이터를 순차적으로 정렬해서 보여주는 함수

 

SELECT 

FROM

WHERE

ORDER BY 기준1 [ASC/DESC]

 

DESC - 내림차수(내려가면서 작아진다)

ASC - 오름 차수(내려가면서 커진다.)

 

연봉순으로 내림차수로 결과를 보여준다.

 

이건 DEPT_ID 순으로 내림차수를 한데 그냥 출력하면 NULL이 제일 위에 뜬다. 

 

이걸 내리기 위에 DESC에 NULLS LAST을 넣어준다.

 

이건 NULL을 제일 마지막에 출력한다는 옵션이다.

 

 반대로 NULLS FIRST 도 있다.

 

그리고 oreder by 는 인덱스나 AS 로 정의한 별칭으로도 가능하다.

 

 

 

 

 

GROUP BY

 

데이터 들을 그룹으로 묶어주는 함수

 

 

SELECT 

FROM

WHERE

GROUP BY column_name | expr

 

 

첫번째 쿼리는 DEPT_ID 라는 부서 번호로 그룹을 묶었다. GROUP BY 를 쓸때 주의 할 점은

그룹으로 묶여있는 것을 출력 할때는 다른 것들도 그룹으로 묶여서 출력 할수 있게끔 해야한다.

왜냐하면 이미 묶어서 출력을 하기 때문에 다른 것들이 묶여서 보여지지 않고 개별로 나온다면 에러가나기 떄문이다.

SUM - 총합 계산

AVG - 평균 계산 

MIN - 최소값 반환

MAX - 최대값 반환

COUNT - Result Set 전체 행 수 반환

 

이것들은 컬럼에 대한 값을 묶어서 출력해주는 간단한 함수이다. 이런 식으로 GROUP BY 절로 묶은 컬럼과 

 

 

GROUP BY 는 ORDER BY 처럼 인덱스나 별칭으로 사용 할 수 없다.

 

 

 

 

ROLLUP 중간중간에 대한 소계를 넣어준다.

 

 

 

 

 

HAVING 절

 

그룹에 대한 제한을 하기 위해 사용한다.

GROUP BY 에 대한 조건을 걸기 위해 HAVING을 사용한다. 

HAVING은 그룹에 대한 조건이고

WHERE는 테이블에 대한 조건이다.

 

SELECT

FROM

GROUP BY

HAVING

 

SELECT 부분에 보면 SELECT 의 SUM 에대한 조건은 HAVING 절에 들어간다. 

 

 

 

 

WHERE에 그룹의 조건을 넣어주면 에러가 난다.

 

반응형