[Oracle] 2020.12.16. day_38 select _ 조회되는 레코드의 중복 값 제거 1. distinct 2. group by
2020. 12. 16. 17:04ㆍWeb_Back-end/Oracle
◎ select _ 조회되는 레코드의 중복 값 제거
○ 1. distinct
distinct | |
중복값을 가지고 있는 컬럼 앞에 정의 | |
Error를 발생시키지 않는다 | |
여러 컬럼을 함께 조회하면 중복배제가 되지 않는다 | |
문법 | select distinct 컬럼명 from 테이블명; |
요청조건 | 결과 |
사원테이블에서 직무를 조회 단, 중복되는 직무는 조회하지 않는다 |
![]() |
select distinct job
from emp;
○ null값이 포함된 경우
요청조건 | 결과 |
사원테이블에서 매니저번호를 조회 단, 중복되는 매니저번호는 조회하지 않는다 null 도 값으로 해당하여 나온다 |
![]() |
select distinct mgr
from emp;
※ 중복배제를 하지 않는 경우
요청조건 | 중복값이 없는 컬럼과 같이 조회 | |
distinct는 중복값을 가진 컬럼과 중복값을 가지지 않은 컬럼이 레코드로 조회되면 중복배제를 하지 않는다 |
![]() 중복값 있는 컬럼 |
![]() |
select distinct deptno, ename
from emp;
○ 2. group by
group by | |
group by 절을 정의하여 그룹화할 컬럼선택 | |
Error를 발생시킨다 | |
Error | 그룹으로 묶이지 않은 컬럼이 조회컬럼에 직접 정의되면 Error발생 |
집계함수와 함께 사용되면 그룹별 집계를 얻을 수 있다 | |
having절과 함께 사용하면 그룹으로 묶을 조건을 설정할 수 있다 | |
rollup, cube를 사용하여 중간집계를 얻을 수 있다 | |
문법 | group by 그룹으로묶일 컬럼명,,, |
요청조건 | 결과 |
사원테이블에서 직무를 조회 단, 중복되는 직무는 조회하지 않는다 |
![]() |
select deptno
from emp
group by deptno;
※ 그룹으로 묶여지지 않은 컬럼이 조회컬럼에 정의되면 Error
Error 발생 | 결과 |
그룹으로 묶여지지 않은 컬럼이 조회컬럼에 정의되면 Error |
Error |
select deptno, ename
from emp
group by deptno;
잘못된 사용방법 | 결과 |
여러 행이 조회되는 컬럼과 같이 사용되면 group으로 묶여지지 않는다 |
![]() |
select deptno, ename
from emp
group by deptno, ename;
- 알고 넘어가야할 내용
- group by에 정의된 컬럼만 select에 쓸 수 있다
- 중복되는 값이 없는 컬럼을 group by 하는 것은 잘못된 사용이다