SELECT DISTINCT emp_no FROM salaries;
SELECT emp_no FROM salaries GROUP BY emp_no;
SELECT COUNT(DISTINCT s.salary)
FROM employees e, salaries s
WHERE e.emp_no = s.emp_no
AND e.emp_no BETWEEN 100001 AND 100100;
salary
칼럼의 값만 저장하기 위한 임시 테이블을 만들어서 사용한다.salary
칼럼에는 유니크 인덱스가 생성되기 때문에 레코드 건수가 많아진다면 상당히 느려질 수 있는 형태의 쿼리다.COUNT(DISTINCT e.last_name)
를 하나 더 추가한다면, 실행 계획은 똑같이 표시되지만 salary
칼럼의 값을 저장하는 임시 테이블과 last_name
칼럼의 값을 저장하는 임시 테이블이 필요하므로 전체적으로 2개의 임시 테이블을 사용한다.SELECT COUNT(DISTINCT emp_no) FROM employees;
SELECT COUNT(DISTINCT emp_no) FROM dept_emp GROUP BY dept_no;