Pivotar datos en SQL
¿Comenzar aquí? Esta lección es parte de un tutorial completo sobre el uso de SQL para el análisis de datos. Mire el principio.
En esta lección, cubriremos:
- Girar filas a columnas
- Girar columnas a filas
- ¿Qué sigue?
Girar filas a columnas
Esta lección le enseñará cómo tomar datos formateados para análisis y girarlos para presentaciones o gráficos. . Tomaremos un conjunto de datos que se ve así:
Y lo haremos lucir así:
Para este ejemplo, usaremos el mismo conjunto de datos de jugadores de fútbol americano universitario que se usó en la lección CASE. Puede ver los datos directamente aquí.
Comencemos agregando los datos para mostrar el número de jugadores de cada año en cada conferencia, similar al primer ejemplo en la lección de unión interna:
Vea esto en modo.
Para transformar los datos, necesitaremos poner la consulta anterior en una subconsulta. Puede resultar útil crear la subconsulta y seleccionar todas sus columnas antes de comenzar a realizar transformaciones. Volver a ejecutar la consulta en pasos incrementales como este hace que sea más fácil de depurar si su consulta no se ejecuta. Tenga en cuenta que puede eliminar la cláusula ORDER BY
de la subconsulta ya que «reordenaremos los resultados en la consulta externa.
Suponiendo que funciona según lo planeado (los resultados deben verse exactamente igual que la primera consulta), es hora de dividir los resultados en diferentes columnas para varios años. Cada elemento en la instrucción SELECT
crea una columna, por lo que tendrá que crear una columna separada para cada año:
Técnicamente, ahora ha logrado el objetivo de este tutorial. Pero esto aún podría mejorarse un poco. Notará que la consulta anterior produce una lista ordenada alfabéticamente por Conferencia. Podría tener más sentido agregar una columna de «jugadores totales» y ordenar por eso (de mayor a menor):
¡Y ya está! Vea esto en el modo.
Columnas pivotantes a filas
Muchos de los datos que encontrará en Internet están formateados para consumo, no para análisis. Tomemos, por ejemplo, esta tabla que muestra la cantidad de terremotos en todo el mundo entre 2000 y 2012:
En este formato, es difícil responder preguntas como «¿qué «¿Es la magnitud promedio de un terremoto?» Sería mucho más fácil si los datos se mostraran en 3 columnas: «magnitud», «año» y «número de terremotos». A continuación, se explica cómo transformar los datos en ese formato:
Primero, consulte estos datos en Modo:
Nota: columna los nombres comienzan con «year_» porque el modo requiere que los nombres de las columnas comiencen con letras.
Lo primero que debe hacer aquí es crear una tabla que enumere todas las columnas de la tabla original como filas en una nueva tabla . A menos que tenga un montón de columnas para transformar, la forma más fácil a menudo es simplemente enumerarlas en una subconsulta:
Una vez que tenga esto , puede combinarlo con la tabla worldwide_earthquakes
para crear una vista expandida:
Observe que cada fila en el worldwide_earthquakes
se replica 13 veces. Lo último que debe hacer es solucionar este problema mediante una CASE
declaración que extrae datos de la columna correcta en la tabla worldwide_earthquakes
dado el valor en la year
columna:
Vea el producto final en Modo.
¡Felicitaciones por terminar el Tutorial de SQL avanzado! Ahora que ya tiene un manejo de SQL, el siguiente paso es perfeccionar su proceso analítico.
Hemos creado la sección de Capacitación de SQL Analytics para ese mismo propósito. Con conjuntos de datos falsos para imitar situaciones del mundo real, puede abordar esta sección como una capacitación en el trabajo. ¡Compruébalo!