본문 바로가기
Programming

2. 오라클(SQL 함수) - ORDER BY, GROUP BY, HAVING

by Mizix 2009. 7. 14.
반응형
2. 오라클 - ORDER BY, GROUP BY, HAVING

1) ORDER BY
- 데이터 정렬해서 보기
ORDER BY 칼럼이름 [ASC|DESC]

※ ORDER BY에 기본은 ASC정렬(오름차순)이다.
    ASC 오름차순 - 작은 값부터 큰 값
    DESC
내림차순 - 큰 값부터 작은 값

● 오름차순으로 정렬하기
SQL>
SELECT employee_id, last_name, salary
FROM employees
WHERE salary >= 10000
ORDER BY salary;
>> employees 안에 있는 데이터 중 salary >= 10000 의 조건을 만족하는 데이터의 employee_id, last_name, salary 칼럼을 조회한다. 이때 salary의 데이터를 기준으로 오름차순으로 출력한다.

● 내림차순으로 정렬하기
SQL>
SELECT employee_id, last_name, salary
FROM employees
WHERE salary >= 10000
ORDER BY salary DESC;
>> employees 안에 있는 데이터 중 salary >= 10000 의 조건을 만족하는 데이터의 employee_id, last_name, salary 칼럼을 조회한다. 이 때 salary의 데이터를 기준으로 내림차순으로 출력한다.



2) GROUP BY - 데이터 그룹화하기
GROUP BY 칼럼이름

※칼럼의 동일한 데이터끼리 그룹으로 묶는다

그룹화하여 평균 구하기
SQL>
SELECT department_id, AVG(salary)
FROM employees
GROUP BY
department_id
ORDER by department_id;
>> employees 안에 있는 데이터 중 department_id, AVG(salary)를 조회한다. 조회할 때 부서별(department_id)로 그룹화 한 후 부서별 급여(salary)의 평균을 구한다. 그 후에 department_id를 기준으로 오름차순으로 출력한다.

※ AVG(salary)는 salary의 평균값을 구하는 공식.

연도별 그룹화하기
SELECT TO_CHAR(hire_date, 'yyyy'), AVG(salary)
FROM employees
GROUP BY TO_CHAR(hire_date, 'yyyy');

>> employees 안에 있는 데이터 hire_date, salary의 데이터를 hire_date의 연도별로 그룹화 한 후, 연도별 평균 값을 출력한다.

※TO_CHAR(hire_date, 'yyyy')  는 hire_date의 연도(yyyy)의 값을 구한다. TO_CHAR에서 더 설명함.



3) HAVING - GROUP BY의 결과로부터 특정 조건을 만족하는 것만 조회하기
GROUP GY 칼럼이름
HAVING 조건

※그룹으로 묶어진 칼럼에서 조건에 맞는 그룹만 조회한다.

●조건에 만족하는 그룹만 출력하기
SQL>
SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id
HAVING AVG(salary0>=10000;
>> employees 안의 데이터를 동일한 department_id 별로 그룹으로 묶어 그룹별 급여평균이 10000이상인 그룹만 조회한다.



반응형