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:
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);
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:
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 é:
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:
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
Leave a Reply