Union
Parte de la sección Fundamentos del Journey de SQL de Coddy — lección 48 de 72.
Las uniones son diferentes de los joins. Los joins utilizan condiciones para combinar tablas, pero las uniones simplemente añaden una tabla encima de la otra. Para usar UNION escribiremos:
SELECT col1, col2, ... FROM table1
UNION
SELECT col1, col2, ... FROM table2Ambos selects deben obedecer las siguientes reglas:
- El número de campos debe ser igual
- El orden es importante
- Las columnas en la misma posición deben coincidir con los tipos de datos
Por ejemplo, supongamos que tenemos las siguientes tablas:
germany_people
| id | name |
| 1 | Lena |
| 2 | Leonie |
england_people
| id | nombre |
| 1 | George |
| 2 | Lena |
Problema: Queremos hacer una tabla grande con todos los nombres que tenemos.
SELECT name from germany_people
UNION
SELECT name from england_peopleResultado:
| name |
| Lena |
| Leonie |
| George |
UNION devuelve solo valores únicos, mientras que UNION ALL devuelve todos los registros tal cual:
SELECT name from germany_people
UNION ALL
SELECT name from england_peopleResultado:
| nombre |
| Lena |
| Leonie |
| George |
| Lena |
También puedes combinar UNION ALL con funciones de agregación, GROUP BY y ORDER BY para resumir datos a través de múltiples tablas. El truco consiste en envolver el UNION ALL dentro de una subconsulta y luego aplicar la agrupación y el ordenamiento sobre ella.
Por ejemplo, supongamos que queremos contar cuántas veces aparece cada nombre en ambas tablas:
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 |
Aquí, UNION ALL (no UNION) se utiliza para que los duplicados como Lena se mantengan; de lo contrario, se eliminarían antes del recuento. La subconsulta combina todas las filas y luego GROUP BY + COUNT las resumen. ORDER BY ordena el resultado final.
Desafío
FácilTablas y columnas disponibles:
<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>
Hay 3 tablas de ventas.
Encuentra la suma de las ventas para cada producto de todas las tablas juntas.
El resultado debe incluir el product_id y las ventas totales.
Nombra esta columna total_sales.
Ordena los resultados por las ventas totales en orden descendente.
Pruébalo tú mismo
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones 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