SQL 상관된 하위
요약:이 튜토리얼에서,당신은 당신에 대해 배우게 될 것입 SQL 상관된 하위는 하위 사용하는 값에서 쿼리가 있습니다.
Sql 상관 하위 쿼리 소개
예제부터 시작하겠습니다.
다음과 같은employees
테이블에서 샘플 데이터베이스
다음과 같은 쿼리를 찾는 직원들이 급여가 평균 이상봉은 모든 직원
SELECT employee_id, first_name, last_name, salaryFROM employeesWHERE salary > (SELECT AVG(salary) FROM employees);
이 예제에서 하위 사용에WHERE
clause. 거기에 몇 가지 포인트는 당신이 볼 수 있에서 쿼리를
첫 번째 실행할 수 있습니다리를 반환한 평균 급여의 모든 직원들이 독립적으로.
SELECT AVG(salary)FROM employees;
둘째,데이터베이스 시스템은 하위 쿼리를 한 번만 평가해야합니다.
셋째,외부 쿼리는 하위 쿼리에서 반환 된 결과를 사용합니다. 외부 쿼리는 해당 값에 대한 하위 쿼리에 따라 다릅니다. 그러나 하위 쿼리는 외부 쿼리에 의존하지 않습니다. 때로는이 하위 쿼리를 일반 하위 쿼리라고 부릅니다.
일반 하위 쿼리와 달리 상관 된 하위 쿼리는 외부 쿼리의 값을 사용하는 하위 쿼리입니다. 또한 상관 된 하위 쿼리는 외부 쿼리에 의해 선택된 각 행에 대해 한 번 평가 될 수 있습니다. 이 때문에 상관된 하위 쿼리를 사용하는 쿼리가 느려질 수 있습니다.
상관 된 하위 쿼리는 반복 하위 쿼리 또는 동기화 된 하위 쿼리라고도합니다.
SQL 상관 하위 쿼리 예제
더 잘 이해하기 위해 상관 하위 쿼리의 예제를 몇 가지 더 살펴 보겠습니다.
SQL 상관된 하위 WHERE 절에서 예
다음과 같은 쿼리를 찾는 모든 직원들이 급여 보다 더 높은 평균 급여의 직원들의 부서:
SELECT employee_id, first_name, last_name, salary, department_idFROM employees eWHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id)ORDER BY department_id , first_name , last_name;
여기에 출력:
이 예제에서,외부 쿼리입니다:
SELECT employee_id, first_name, last_name, salary, department_idFROM employees eWHERE salary >...
와 상관된 하위:
SELECT AVG( list_price )FROM productsWHERE category_id = p.category_id
각 직원에 대한 데이터베이스 시스템의 실행에 상관된 하위를 한 번 계산의 평균 급여 직원의 부서에서는 현재 employee.
SQL 상관된 하위 SELECT 절에서 예
다음과 같은 쿼리를 반환한 직원과의 평균 급여 모든 직원들은 부서:
SELECT employee_id, first_name, last_name, department_name, salary, (SELECT ROUND(AVG(salary),0) FROM employees WHERE department_id = e.department_id) avg_salary_in_departmentFROM employees e INNER JOIN departments d ON d.department_id = e.department_idORDER BY department_name, first_name, last_name;
출력 결과는 다음과 같습니다.
각 직원에 대한 데이터베이스 시스템의 실행에 상관된 하위를 한 번 계산 평균 급여에 의해 직원의 부가 있습니다.
SQL 상관 하위 쿼리와 exists 연산자 예제
우리는 종종EXISTS
연산자와 상관 하위 쿼리를 사용합니다. 예를 들어,다음과 같은 쿼리를 반환하는 모든 직원이 없는 가족:
SELECT employee_id, first_name, last_nameFROM employees eWHERE NOT EXISTS( SELECT * FROM dependents d WHERE d.employee_id = e.employee_id)ORDER BY first_name , last_name;
다음과 같은 그림이 보여 출력:
이 튜토리얼에서 당신이 배운 것에 대한 SQL 상관된 하위와 방법을 적용하는 형태로 복잡한 쿼리가 있습니다.이 튜토리얼이 도움이 되었습니까?
Leave a Reply