Si trabajas en una startup, ya sea en un equipo de ciencia de datos, growth, marketing o producto, tendrás que interactuar con bases de datos para tomar decisiones informadas, ya que muy probablemente en el lugar que estés se mueva por una cultura data-driven.
La forma de hacerlo es usando SQL. Sí, Python y R son grandes herramientas para análisis de datos y modelamiento estadístico. Pero SQL es la lingua franca del mundo de los datos.
Por eso, en este artículo, tendrás el contexto en el que SQL se vuelve una herramienta muy útil. Y también aprenderás su sintaxis para que hagas tus primeras queries a bases de datos. El contenido a continuación te ayudará a aprender sobre:
- Sintaxis básica de SQL
- Funciones agregadas
- Agrupar y ordenar con
GROUP BY
yORDER BY
- Filtrar registros con
WHERE
¿Cuándo usar SQL?
Una compañía, generalmente, diseñará todo el flujo de los datos, desde la captura hasta la generación de valor. Esto se conoce como una data pipeline. Consiste de un proceso de:
- Ingestión. Es la captura de los datos crudos.
- Procesamiento. Los datos vienen “sucios”, entonces aquí se los prepara para subirse a una base de datos.
- Análisis. Los datos están listos para analizarse y extraer valor. Es aquí cuando usarás SQL para hacer consultas a las bases de datos.
Si quieres aprender más sobre este proceso, te recomiendo tomar el Curso de Ingeniería de Datos con Python.

Vas a usar SQL. Las empresas no almacenan su información en un CSV o archivo de Excel. Los datos los obtendrás haciendo queries. Por eso es importante que lo aprendas. Y a continuación aprenderás a hacer tus primeras queries. Para eso usaremos un dataset de todas las ediciones de la Copa del Mundo desde Uruguay 1930 hasta Rusia 2018.
Entendiendo las bases de datos
Una base de datos es una colección organizada de información estructurada que se almacena electrónicamente (aunque, en teoría, esto último no es estrictamente necesario, pero en la práctica sí). Una base de datos se maneja con un Database Management System (DBMS). Algunos ejemplos son Postgres, MySQL, MariaDB y Oracle Database.
Antes de seguir. Te comparto una notebook con los ejercicios de a continuación. Da clic aquí. Ya te había dicho que no es buena práctica alojar data en archivos csv. Pero nos saltaremos los pasos de conectar a una base de datos nuestra notebook, ya que el fin de este artículo es aprender la sintaxis.
Deepnote permite trabajar con bloques SQL que nos devuelven los resultados en un dataframe. Te dejo la documentación para que puedas indagar más.
Sintaxis de SQL
La sintaxis de SQL es muy sencilla de entender, puesto que se parece mucho al idioma inglés. Además, si ya has desarrollado un pensamiento computacional con Python o con cualquier otro lenguaje de programación, notarás que te resulta sencillo de aprender.
Entonces estaremos trabajando con la tabla matches
y queremos seleccionar todos sus registros. Procedemos así:
SELECT *
FROM matches
Seleccionamos *
que significa todos los registros de la tabla matches
. Esto nos devuelve lo siguiente:

Como notarás, esto nos devuelve mucha información. Es toda la tabla. A veces conviene seleccionar solo una columna o algunas de ellas. Para esto, en lugar del *
ponemos los nombres de las columnas. Luego, seleccionemos las siguientes.
SELECT year, country, city
FROM matches

Ahora, tenemos información más sintetizada que podemos comenzar a analizar. Aquí es donde tú puedes comenzar a obtener valor de varias columnas en específico.
A veces tenemos muchas filas. Por lo que es mejor poner un límite de las que queremos ver. Pueden ser las 5 o 10 primeras o las últimas. Para esto usamos LIMIT
. Mostremos el output anterior pero solo con 5 registros.
SELECT year, country, city
FROM matches
LIMIT 5

Funciones agregadas y valores distintos
Algo muy importante a tener en cuenta en los análisis de datos son los valores únicos que existen en un registro. Para esto usamos DISTINCT
. Seleccionemos los países únicos en los que se han celebrado los mundiales.
SELECT DISTINCT country
FROM matches

Si bien esto nos empieza a dar una idea de la información en nuestro dataset, podemos mejorarlo. Usaremos aggregate functions (o funciones agregadas). Estas funciones nos son útiles para resumir numéricamente alguna variable (columna) y así interpretar mejor. Ahora usaremos COUNT
para contar los países que han sido sede de la Copa del Mundo.
SELECT COUNT (DISTINCT country)
FROM matches

También podríamos, por ejemplo, obtener los goles totales de los equipos visitantes y locales, así como el promedio por partido.
SELECT SUM(home_score) AS total_home,
SUM(away_score) AS total_away,
ROUND(AVG(home_score), 2) AS avg_home,
ROUND(AVG(away_score), 2) AS avg_away
FROM matches

En la anterior query usamos algo llamado aliasing que es ponerle un alias a la columna que estará en nuestro output. Por eso usamos AS
. También, usamos ROUND
que recibe 2 argumentos, la columna/valor a redondear y el número de decimales.
Te dejo un link con más SQL Aggregate Functions.
Queries más avanzadas: GROUP BY
y ORDER BY
Ya que has aprendido a hacer consultas sencillas, estás lista o listo para subir la dificultad y obtener información que puede aportar más valor para tus análisis. Entonces podemos agrupar la información y, de la misma forma, ordenarla.
Agrupemos el número total de goles por cada edición del mundial.
SELECT year,
SUM(home_score + away_score) AS total_goals
FROM matches
GROUP BY year
ORDER BY total_goals DESC
LIMIT 5

Date cuenta de que cuando usamos una aggregate function, las columnas que no tienen estas funciones van junto al GROUP BY
que tenemos más abajo. Por eso, en la anterior query usamos GROUP BY year
.
También ORDER BY total_goals DESC
indica que se ordenen los registros de mayor a menor. Si quisiéramos que sea de menor a mayor, podríamos haber usado ASC
o no poner nada porque este es el valor por defecto.
Ahora bien, si quisiéramos traernos el año y el país sede juntos, deberíamos usar un GROUP BY year, country
, de lo contrario, nos arrojaría un error. Hagamos la query.
SELECT year,
country,
SUM(home_score + away_score) AS total_goals
FROM matches
GROUP BY year, country
ORDER BY total_goals DESC
LIMIT 5

Veamos ahora cómo filtrar filas con WHERE
Filtrando registros con WHERE
Filtrar registros es de gran utilidad cuando queremos obtener información de aquellas filas que cumplen con cierto criterio. Para eso, usamos WHERE
. Veamos un ejemplo en el que obtendremos los partidos que se jugaron cuando Rusia fue sede del mundial.
SELECT home_team, away_team, country
FROM matches
WHERE country = 'Russia'

¿Qué más sigue sobre SQL?
Has aprendido a hacer tus primeras queries. Ya puedes empezar a hacer análisis básicos de datos usando SQL. Pero aún hay más por aprender sobre este lenguaje de consultas. Así que me gustaría que me cuentes en los comentarios si quisieras ver más artículos como este en el que puedas profundizar en temas como:
- nested queries,
- common table expressions,
- joins,
- window functions y más.
El camino sigue. Te recomiendo tomar el Curso de PostgreSQL Aplicado a Ciencia de Datos donde aplicarás los conceptos a la práctica y verás su muy importante relación con la ciencia de datos.
Curso de PostgreSQL Aplicado a Ciencia de Datos