Articles

SQL Subconsulta Correlacionada

Resumo: neste tutorial, você vai aprender sobre o SQL subconsulta correlated que é uma subconsulta que usa valores de consulta externa.

Introdução ao subconjunto relacionado com SQL

vamos começar com um exemplo.

Veja o seguinte employees tabela no banco de dados de exemplo:

SQL Subconsulta Correlated: Tabela de funcionários

O seguinte consulta localiza empregados cujo salário é maior que o salário médio de todos os empregados:

SELECT employee_id, first_name, last_name, salaryFROM employeesWHERE salary > (SELECT AVG(salary) FROM employees);
Subconsulta SQL exemplo

neste exemplo, a subconsulta é usado no WHERE cláusula. Existem alguns pontos que você pode ver a partir desta consulta:

primeiro, você pode executar o subquery que retorna o salário médio de todos os funcionários independentemente.

SELECT AVG(salary)FROM employees;

Second, the database system needs to evaluate the subquery only once.em terceiro lugar, a consulta externa faz uso do resultado retornado da subquery. A consulta externa depende do subcontingente pelo seu valor. No entanto, o subquery não depende da consulta externa. Às vezes, chamamos a isto subquery um subquery simples.

Ao contrário de uma subquery simples, uma subquery correlacionada é uma subquery que usa os valores da consulta externa. Além disso, um subcontingente correlacionado pode ser avaliado uma vez para cada linha selecionada pela consulta externa. Por causa disso, uma consulta que usa um subconjunto correlacionado pode ser lenta.

uma subquery correlacionada é também conhecida como uma subquery repetitiva ou uma subquery sincronizada.

SQL subquery examples

Let’s see few more examples of the correlated subqueries to understand them better.

SQL subconsulta correlacionada na cláusula WHERE exemplo

a consulta A seguir encontra todos os funcionários cujo salário é maior do que o salário médio dos funcionários de seus departamentos:

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;

Aqui é a saída:

SQL Subconsulta Correlacionada Exemplo

neste exemplo, a consulta externa é:

SELECT employee_id, first_name, last_name, salary, department_idFROM employees eWHERE salary >...

e a subconsulta correlacionada é:

SELECT AVG( list_price )FROM productsWHERE category_id = p.category_id

Para cada funcionário, o sistema de banco de dados deve executar o subconsulta correlated uma vez, para calcular o salário médio dos empregados no departamento do funcionário atual.

SQL subconsulta correlacionada na cláusula SELECT exemplo

a consulta A seguir retorna os funcionários e o salário médio de todos os empregados em seus departamentos:

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;

O resultado é:

SQL Subconsulta Correlacionada na cláusula SELECT

Para cada funcionário, o sistema de banco de dados deve executar o subconsulta correlated uma vez, para calcular o salário médio do trabalhador do departamento.

subquery relacionado com SQL com o exemplo do operador existente

muitas vezes usamos uma subquery correlacionada com o EXISTS operador. Por exemplo, a consulta a seguir retorna todos os funcionários que têm dependentes:

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;

a imagem A seguir mostra a saída:

SQL Subconsulta Correlacionada com o operador EXISTS

neste tutorial, você tem aprendido sobre o SQL subconsulta correlated e como aplicá-la para formar um complexo de consulta.

  • este tutorial foi útil ?
  • YesNo