Conteúdo do Curso
SQL Intermediário
SQL Intermediário
UNIR 2 Tabelas
Ótimo! Conseguimos a atenção de uma empresa que possui uma pequena loja online. Eles têm 2 tabelas relacionadas entre si. A primeira tabela contém informações sobre os produtos vendidos na loja online.
Eis como é a product
tabela:
A segunda tabela contém as categorias de produtos do site, juntamente com uma breve descrição para cada categoria.
Eis como se apresenta a tabela category
:
Vamos trabalhar com estas duas tabelas.
Temos a primeira tarefa: juntar estas 2 tabelas e ver a quantidade de produtos em cada categoria. Para isso, vamos utilizar uma declaração JOIN
.
Vamos fazer uma pausa da tarefa principal e entender o que é uma declaração JOIN
e como utilizá-la.
Para juntar 2 tabelas, elas devem ter uma coluna em comum entre si. Vamos considerar o uso de JOIN
usando o exemplo das tabelas employees
e department
. Lembrarei que a coluna em comum deles é employees.department
e departments.name
.
Nota
Perceba como escrevi as colunas dessas tabelas. Primeiro, escrevo o nome da tabela, depois coloco um ponto e o nome da coluna. Quando usamos mais de uma tabela em uma consulta, precisamos especificar a tabela da qual estamos tirando a coluna para tornar o código legível. Além disso, no caso em que tabelas têm colunas com o mesmo nome, precisamos que o SQL entenda a qual tabela e coluna estamos nos referindo.
Vamos nos propor a tarefa de recuperar o salário total dos funcionários em cada tipo de departamento (tech
/não-tech
).
A consulta para realizar essa tarefa será assim:
SELECT department.type, SUM(employees.salary) AS total_salary FROM employees JOIN department ON employees.department = department.name GROUP BY department.type
Vamos entender passo a passo o que fizemos e como usamos JOIN
:
- Na seção
SELECT
, especificamos as colunas que precisamos recuperar de duas tabelas, indicando o nome da tabela a que a coluna pertence; - Na seção
JOIN
, especificamos a tabela que queremos unir, seguida pela especificação da coluna comum. No nosso caso, éemployees.department
edepartment.name
; - Em seguida, agregamos os dados por
type
(já que temos uma função de agregaçãoSUM()
na seçãoSELECT
para encontrar o salário total) e obtemos o resultado que nos interessa.
A consulta pode parecer complexa, então vamos olhar para a sintaxe geral para usar JOIN
:
Dessa forma, podemos unir tabelas e obter o resultado desejado, mesmo que as informações estejam espalhadas por várias tabelas.
Nota
Ao contrário da cláusula
UNION
, a instruçãoJOIN
nos permite combinar completamente as tabelas, não apenas as colunas comuns entre elas. Também é importante observar que, ao usar a instruçãoJOIN
, não precisamos usar subconsultas com cláusulas, como fazemos com a cláusulaUNION
.
Agora, vamos voltar à tarefa que temos em mãos e reforçar nosso conhecimento com prática:
Swipe to show code editor
Sua tarefa é juntar as duas tabelas: category
e product
. As colunas comuns para essas duas tabelas são product.category_id
e category.id
. Sua tarefa é encontrar a quantidade total de produtos em cada categoria. Para isso, você precisa calcular a soma da coluna product.amount
. Use o alias total_amount
para esta coluna!
No final da sua consulta, ordene o resultado pela coluna total_amount
em ordem ascendente.
Na resposta, você deve ter 2 colunas: category.name
e total.amount
.
Boa sorte!
Obrigado pelo seu feedback!
UNIR 2 Tabelas
Ótimo! Conseguimos a atenção de uma empresa que possui uma pequena loja online. Eles têm 2 tabelas relacionadas entre si. A primeira tabela contém informações sobre os produtos vendidos na loja online.
Eis como é a product
tabela:
A segunda tabela contém as categorias de produtos do site, juntamente com uma breve descrição para cada categoria.
Eis como se apresenta a tabela category
:
Vamos trabalhar com estas duas tabelas.
Temos a primeira tarefa: juntar estas 2 tabelas e ver a quantidade de produtos em cada categoria. Para isso, vamos utilizar uma declaração JOIN
.
Vamos fazer uma pausa da tarefa principal e entender o que é uma declaração JOIN
e como utilizá-la.
Para juntar 2 tabelas, elas devem ter uma coluna em comum entre si. Vamos considerar o uso de JOIN
usando o exemplo das tabelas employees
e department
. Lembrarei que a coluna em comum deles é employees.department
e departments.name
.
Nota
Perceba como escrevi as colunas dessas tabelas. Primeiro, escrevo o nome da tabela, depois coloco um ponto e o nome da coluna. Quando usamos mais de uma tabela em uma consulta, precisamos especificar a tabela da qual estamos tirando a coluna para tornar o código legível. Além disso, no caso em que tabelas têm colunas com o mesmo nome, precisamos que o SQL entenda a qual tabela e coluna estamos nos referindo.
Vamos nos propor a tarefa de recuperar o salário total dos funcionários em cada tipo de departamento (tech
/não-tech
).
A consulta para realizar essa tarefa será assim:
SELECT department.type, SUM(employees.salary) AS total_salary FROM employees JOIN department ON employees.department = department.name GROUP BY department.type
Vamos entender passo a passo o que fizemos e como usamos JOIN
:
- Na seção
SELECT
, especificamos as colunas que precisamos recuperar de duas tabelas, indicando o nome da tabela a que a coluna pertence; - Na seção
JOIN
, especificamos a tabela que queremos unir, seguida pela especificação da coluna comum. No nosso caso, éemployees.department
edepartment.name
; - Em seguida, agregamos os dados por
type
(já que temos uma função de agregaçãoSUM()
na seçãoSELECT
para encontrar o salário total) e obtemos o resultado que nos interessa.
A consulta pode parecer complexa, então vamos olhar para a sintaxe geral para usar JOIN
:
Dessa forma, podemos unir tabelas e obter o resultado desejado, mesmo que as informações estejam espalhadas por várias tabelas.
Nota
Ao contrário da cláusula
UNION
, a instruçãoJOIN
nos permite combinar completamente as tabelas, não apenas as colunas comuns entre elas. Também é importante observar que, ao usar a instruçãoJOIN
, não precisamos usar subconsultas com cláusulas, como fazemos com a cláusulaUNION
.
Agora, vamos voltar à tarefa que temos em mãos e reforçar nosso conhecimento com prática:
Swipe to show code editor
Sua tarefa é juntar as duas tabelas: category
e product
. As colunas comuns para essas duas tabelas são product.category_id
e category.id
. Sua tarefa é encontrar a quantidade total de produtos em cada categoria. Para isso, você precisa calcular a soma da coluna product.amount
. Use o alias total_amount
para esta coluna!
No final da sua consulta, ordene o resultado pela coluna total_amount
em ordem ascendente.
Na resposta, você deve ter 2 colunas: category.name
e total.amount
.
Boa sorte!
Obrigado pelo seu feedback!