
Empieza a usar SQL en 20 minutos
SQL es un lenguaje que se utiliza para hacer consultas a bases de datos. Puede parecer complejo al principio, y algunas consultas pueden llegar a serlo, pero a la base as un lenguaje muy simple. Puedes empezar desde ya a hacer consultas SQL seleccionando las variables que necesitas, filtrando, agrupando datos etc. con sólo 5 comandos básicos. Vamos a verlos!
¡No te pierdas ningún nuevo vídeo!
Visita mi canal de Youtube
La consulta más básica incluye los comandos SELECT y FROM, que especifican respectivamente que quiero seleccionar y de que tabla:
SELECT columna1, columna2, columna3, [columna 4]
FROM tabla1
Como habrás notado, las columnas se separan con comas “,” y, si una columna tiene espacios en el nombre, hay que utilizar paréntesis cuadras. Si quieres seleccionar todas las columnas no hace falta escribirlas todas, sino que se utiliza un asterisco “SELECT *”.
Esta consulta básica nos aporta poco, porque es lo mismo que seleccionar una tabla entera usando la interfaz visual. Para que el rendimiento sea mejor, podemos ya filtrar lo que nos interesa para que Power Query no tenga que leer todos los datos y después filtrarlos. Para filtrar utilizamos el comando WHERE.
SELECT columna1, columna2, columna3
FROM tabla1
WHERE columna1 = ‘algo’ AND columna2 = 4
Con WHERE las cosas se complican un poco, pero voy a intentar explicarlas de manera simple. Cuando pensamos utilizar uno o más condiciones de filtro, tenemos que considerar tres aspectos: el formato de los datos (lo vimos al principio), el operador de la condición que queremos utilizar (igual, diferente, menor, mayor etc.), y la relación entre diferentes condiciones si utilizamos más de una (que cumpla esta condición y la otra):
- Formato de los datos. Dependiendo del formato va a cambiar lo que añadamos después del operador (=, <>…):
- Texto: se escribe entre comillas simples (‘texto’)
- Números: se escriben sin comillas, los decimales no se separan con comas sino con puntos (1.2, 3.4…)
- Fechas: se escriben entre comillas (‘01/01/2016’)
- Operador:
- “=”: selecciona los valores iguales a lo que definamos y se puede utilizar con todos los formatos.
- “<>” selecciona los valores diferentes a lo que definamos y se puede utilizar con todos los formatos.
- “>”, “>=”, “<”, “<=”: seleccionan respectivamente los valores mayores, mayores e iguales, menores, menores e iguales a lo que definamos. Se pueden utilizar con fechas y números.
- “BETWEEN…. AND….”, “NOT BETWEEN… AND…” : seleccionar valores entre (o no entre) los dos valores seleccionados (inclusive).
- “IN”, “NOT IN”: es como utilizar “=” o “<>”, pero nos permite incluir diferentes elementos a la vez: WHERE columna1 IN (‘texto1’, ‘texto2’, ‘texto3’). Por ejemplo, quiero que de la columna “satisfacción” me incluya los “muy satisfecho” y “satisfecho”.
- “LIKE”, “NOT LIKE”: se suele utilizar para seleccionar el texto que cumpla (o no cumpla) unos patrones, por ejemplo, que empiece por “a”. En este tipo de condición se suelen utilizar “comodines” es decir símbolos especiales que representan cualquier carácter. Por ejemplo:
- WHERE satisfaccion LIKE ‘muy%’: quiere decir que seleccionamos todas las respuestas de la columna satisfacción que empiecen por “muy” y que después tengan un número indefinido de cualquier carácter, representado por “%” (en este caso seleccionaríamos por ejemplo “muy satisfecho” y “muy insatisfecho”).
- Hay también otros comodines gracias a los cuales podemos incluir patrones más específicos. Si estás interesado te invito a visitar el siguiente enlace: https://www.w3schools.com/sql/sql_wildcards.asp
- Relación entre diferentes condiciones:
- “AND”, “OR”: las diferentes condiciones se separan por “AND” o “OR”, dependiendo si queremos que se cumplan las dos o más (y) o se cumpla una u otra (o).
- Podemos además utilizar los paréntesis para crear una lógica jerárquica de condiciones. Por ejemplo, quiero que se cumpla esto y esto, o, esto y esto: WHERE (columna1=1 AND columna2=2) OR (columna1=3 AND columna2=5). Un ejemplo concreto es por ejemplo si queremos seleccionar los clientes que han contestado “muy satisfechos” pero que han dicho que no recomendaría nuestro servicio, y los que han contestado “muy insatisfechos” pero que recomendarían nuestro servicio.
Los filtros pueden ser muy creativos combinando diferentes condiciones, e incluso cálculos. No voy a entrar muy en detalle, pero si que dejo un par de ejemplos interesantes:
WHERE year(fecha) = 2020
WHERE fecha < GETDATE()
En el primer ejemplo no tengo el año en la tabla, pero puedo extraerlo en la consulta misma con “year()” y después utilizar la condición de “=2020”. En el segundo ejemplo, quiero que cada vez que actualice la consulta, selecciones todas las fechas hasta ayer, es decir que la fecha de la tabla sea menor de la fecha de hoy, “getdate()”.
Todo lo que hemos visto hasta ahora va a seleccionar y cargar todas las filas, una por una, de la tabla seleccionada, menos las que filtremos. Sin embargo, hay otra manera de reducir el volumen de datos y es agrupar las filas. Utilicemos el ejemplo de pasajeros de un tren. No quiero sacar cada venta en una fila separada, sólo quiere el tren en el que se viajó, la clase, y el total de pasajeros. En este caso el código sería lo siguiente:
SELECT tren, clase, sum(pax) AS pax
FROM tabla
GROUP BY tren, clase
Como habrás notado, en SELECT, lugar de escribir “tren, clase, pax” hemos utilizado una fórmula para que se sumen los pax, “sum()” y hemos definido que nombre le queremos dar a esta columna, “AS…”. Otras operaciones que podemos utilizar son:
- avg(columna): promedio
- min(columna): mínimo
- max(columna): máximo
- count(columna): conta el número de filas con valor no NULO (vacío), si quieres contar todas las filas de la tabla usa “count(*)”.
Ahora que he incluido la suma de pasajeros, ¿podría filtrar las filas con menos de 10 pax? Por ejemplo, WHERE sum(pax) <10.
La buena noticia es que se puede, la mala es que hay que usar otro comando porque no podemos utilizar cálculos en WHERE. Este comando es “HAVING”.
SELECT tren, clase, sum(pax) AS pax
FROM tabla
GROUP BY tren, clase
HAVING sum(pax) < 10
Esta ha sido una breve introducción, lo que se puede hacer desde SQL es bastante más amplio. De momento lo dejamos aquí, pero os enseñaré como combinar y unir diferentes tablas cuando hablemos de transformación de datos en otro post.
Si estás interesado en seguir aprendiendo SQL, te aconsejo Datacamp donde tienes un montón de clases teoríco-prácticas de SQL. Lo mejor es que puedes practicar desde la misma plataforma, algo fundamental para aprender a programar o escribir código. Puedes apuntarte a las clases básicas gratuitas, y si te animas tienes otras clases adicionales de pago.
Trackbacks / Pingbacks