ORDER BY == SORTING
SELECT
FROM
WHERE
ORDER BY
SELECT ENAME, SAL
FROM EMP
ORDER BY SAL ASC; --오름차순 정렬
SELECT ENAME, SAL
FROM EMP
ORDER BY SAL DESC; --내림차순 정렬
--ALIAS
SELECT EMPNO, ENAME, SAL * 12 AS annsal
FROM EMP
ORDER BY annsal DESC; --ALIAS 로도 사용 가능하다.
SELECT ENAME, COMM
FROM EMP
ORDER BY COMM NULLS LAST; --NULLS FIRST NULL값이 맨 위로 올라온다. // NULLS 의 default 값은 LAST
SELECT EMPLOYEE_ID, JOB_ID, SALARY
FROM EMPLOYEES
ORDER BY JOB_ID ASC, SALARY DESC; --JOB_ID로 오름차순 정렬후 연봉으로 내림차순
GROUP BY : 그룹으로 묶는 기능
HAVING : 묶었을 때 조건
SELECT DISTINCT JOB_ID --DISTINCT 하나로 해서(그룹) 중복을 없앤다.
FROM EMPLOYEES;
통계 - GROUP FUNCTION
COUNT -> NULL은 갯수를 포함하지 않는다.
SUM
AVG
MAX
MIN
보통 함수를 같이 사용한다.
SELECT COUNT(SALARY), COUNT(*), SUM(SALARY), AVG(SALARY), -- * = 모두, IT부서의 전체연봉,평균연봉,최고연봉,최저연봉
MAX(SALARY), MIN(SALARY)
FROM EMPLOYEES
WHERE JOB_ID = 'IT_PROG';
SELECT JOB_ID, COUNT(*) --각 부서별로 몇명인지 출력
FROM EMPLOYEES
GROUP BY JOB_ID --주의!! 묶은 다음에는 일반 컬럼은 사용할 수 없다.
ORDER BY JOB_ID;
SELECT JOB_ID, SUM(SALARY), AVG(SALARY) --연봉의 합계, 평균
FROM EMPLOYEES
GROUP BY JOB_ID --주의!! 묶은 다음에는 일반 컬럼은 사용할 수 없다.
ORDER BY JOB_ID;
--업무별로 급여의 합계가 100000$ 이상인 업무만을 출력하라.
SELECT JOB_ID, SUM(SALARY)
FROM EMPLOYEES
GROUP BY JOB_ID -- 1
HAVING SUM(SALARY) >= 100000; -- 2 HAVING : 묶은 다음 조건
--급여가 5000이상 받는 사원으로 합계를 내서 업무로 그룹화하여
--급여의 합계가 20000을 초과하는 업무명을 구하라.
SELECT JOB_ID, SUM(SALARY) AS 합계
FROM EMPLOYEES
WHERE SALARY >= 5000
GROUP BY JOB_ID
HAVING SUM(SALARY) > 20000
ORDER BY "합계" DESC;
'데이터베이스 > Oracle' 카테고리의 다른 글
[Oracle]무결성(Constraint) 제약 조건 (0) | 2021.05.31 |
---|---|
[Oracle] JOIN 쉽게 이해하기 (0) | 2021.05.29 |
[Oracle] 비교연산자, ALL, ANY, IN, NOT IN, BETWEEN, LIKE 연습 (0) | 2021.05.27 |
[Oracle] scott 계정 연습문제 (SELECT문, 비교 연산자, 논리 연산자) (0) | 2021.05.27 |
[Oracle] SELECT문 형식 (0) | 2021.05.27 |