Union
Parte da seção Fundamentos do Journey de SQL da Coddy — lição 48 de 72.
Unions são diferentes de joins. Joins usam condições para combinar tabelas, mas unions apenas adicionam duas tabelas uma sobre a outra. Para usar UNION, escreveremos:
SELECT col1, col2, ... FROM table1
UNION
SELECT col1, col2, ... FROM table2Ambos os selects devem obedecer às seguintes regras:
- O número de campos deve ser igual
- A ordem é importante
- As colunas na mesma posição devem corresponder aos tipos de dados
Por exemplo, vamos supor que temos as seguintes tabelas:
germany_people
| id | nome |
| 1 | Lena |
| 2 | Leonie |
england_people
| id | name |
| 1 | George |
| 2 | Lena |
Problema: Queremos criar uma grande tabela com todos os nomes que temos.
SELECT name from germany_people
UNION
SELECT name from england_peopleResultado:
| nome |
| Lena |
| Leonie |
| George |
UNION retorna apenas valores distintos, enquanto UNION ALL retorna todos os registros como estão:
SELECT name from germany_people
UNION ALL
SELECT name from england_peopleResultado:
| nome |
| Lena |
| Leonie |
| George |
| Lena |
Você também pode combinar UNION ALL com funções de agregação, GROUP BY e ORDER BY para resumir dados em várias tabelas. O truque é envolver o UNION ALL dentro de uma subquery, e então aplicar o agrupamento e a ordenação sobre ele.
Por exemplo, suponha que queiramos contar quantas vezes cada nome aparece em ambas as tabelas:
SELECT name, COUNT(*) AS total_count
FROM (
SELECT name FROM germany_people
UNION ALL
SELECT name FROM england_people
) AS combined
GROUP BY name
ORDER BY total_count DESCResultado:
| name | total_count |
| Lena | 2 |
| Leonie | 1 |
| George | 1 |
Aqui, UNION ALL (não UNION) é usado para que duplicatas como Lena sejam mantidas — caso contrário, elas seriam removidas antes da contagem. A subconsulta mescla todas as linhas e, em seguida, GROUP BY + COUNT as resume. ORDER BY ordena o resultado final.
Desafio
FácilTabelas e colunas disponíveis:
<strong>sales_2009</strong>:<strong>product_id</strong>,<strong>quantity_sold</strong><strong>sales_2010</strong>:<strong>product_id</strong>,<strong>quantity_sold</strong><strong>sales_2011</strong>:<strong>product_id</strong>,<strong>quantity_sold</strong>
Existem 3 tabelas de vendas.
Encontre a soma das vendas para cada produto de todas as tabelas juntas.
O resultado deve incluir o product_id e o total de vendas.
Nomeie esta coluna como total_sales.
Ordene os resultados pelo total de vendas em ordem decrescente.
Experimente você mesmo
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns