[순서]
SELECT FROM WHERE GROUP BY HAVING ORDER BY
group by
- group 은 특정 칼럼을 기준으로 집계를 내는데 사용된다.
- 형식
SELECT [GROUP BY 절에 지정된 컬럼1][GROUP BY 별로 집계할 값]
FROM [테이블 명]
GROUP BY[그룹으로 묶을 컬럼]
select dept_code, sum(salary)
from employee
group by dept_code;
--> 그룹화 할 경우 그룹화된 정보만 가져올 수 있다.
-- 회사내 직원의 성별 별 인원 수
select
decode()
having
- Having 절은 Group by로 집계된 값 중 where 절 처럼 특정 조건을 추가
- 형식
SELECT [GROUP BY 절에 지정된 컬럼1][GROUP BY별로 집계할 값]
FROM [테이블 명]
GROUP BY[그룹으로 묶을 컬럼 값]
HAVING [조건 추가];
--부서별 급여 평균을 구했을 때 , 급여 평균이 300만원 이상인 부서의 정보만 출력
select
dept_code,
avg(salary)
from employee
where avg(salary)>= 3000000//에러
> 에러나는 이유
1. where 절에는 그룹함수를 사용할 수 없다.
2. 쿼리의 실행 순서 때문
* 쿼리 실행 순서
from -> where(그룹화 이전 데이터 전체에 대하여 적용될 조건)->group by
-> having(그룹화 된 데이터에 대하여 적용될 조건)->select->order by
- select 에서 만든 alias는 where 절에서 사용할 수 없다.(실행순서 때문에)
- select 에서 만든 alias는 order by에서는 사용할 수 있다.
'2024_풀스택학원 > Back-end' 카테고리의 다른 글
[Java] DBCP, TIMESTAMP (0) | 2024.05.02 |
---|---|
[Database] 단일행 함수 / 그룹 함수 (0) | 2024.04.28 |
[ JDBC ] 04/26 (0) | 2024.04.26 |
[Database] DDL/DML/DCL(GRANT)/ 제약 조건 (0) | 2024.04.24 |
[DataBase]sysdate, like, between, in, like, order by (0) | 2024.04.19 |