8 - Sentencias CASE

Lección 8 del curso SQL Nivel Básico.

En la lección anterior vimos cómo usar WHERE para realizar el filtrado de datos.

En ese caso vimos que WHERE permite preservar las filas que cumplan la condición establecida y elimina las filas restantes (de allí el término “filtrado”). Así por ejemplo, vimos cómo tomar la tabla “productos” y preservar únicamente aquellos “precios” mayores o iguales a 100.

Pero ¿qué pasa si por ejemplo nos interesa categorizar los precios?. Es decir que en lugar de quedarnos con sólo los productos con precios mayores que 100 lo que nos interesa es quedarnos con TODOS los productos pero asignarles una categoría, por ejemplo “precio alto”, “precio medio” y “precio bajo”, dependiendo de si por ejemplo son menores o iguales a 100, o están entre 100 y 1.000 o son superiores a 1.000. En este caso lo que queremos es preservar todas las filas pero asignar una de tres posibles categorías a cada precio.

En otra situación lo que podríamos tener sería tener columnas categóricas (como por ejemplo “electrodomésticos”, “dvds”, “música”, etc.) y lo que queremos es codificar numéricamente cada una de ellas. Esto hace parte de lo que se conoce como el feature engineering (o “ingeniería de características”) y es una tarea muy común en el Machine Learning.

En estas situaciones podemos usar la sentencia CASE que nos permite convertir datos numéricos continuos a un variables discretas (la primera situación), o datos categóricos a representaciones numéricas equivalentes (la segunda situación).

Así que en esta lección hablaremos de la sentencia CASE y veremos específicamente:

Comencemos entonces viendo la sintaxis básica de CASE y un sencillo ejemplo de aplicación:

Contenido exclusivo suscriptores

Suscríbete para tener acceso al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

Muy bien, acabamos de ver que la sentencia CASE debe estar siempre ubicada entre sentencias SELECT y FROM, de las cuales hablamos en una lección anterior.

Y dentro de estas sentencias ubicamos la sentencia CASE que a su vez está conformada por sentencias WHERE (que permiten evaluar una o varias condiciones) y que al combinarlas con sentencias THEN y ELSE nos permiten asignar uno u otro valor dependiendo de si se cumplen o no las condiciones establecidas.

Y al finalizar la sentencia CASE añadimos la palabra clave END AS que nos permite especificar el nombre de la columna resultante en la cual almacenaremos la variable categórica generada.

Teniendo clara esta sintaxis básica y habiendo visto un ejemplo básico de uso, veamos dos formas más avanzadas de hacer uso de CASE:

Contenido exclusivo suscriptores

Suscríbete para tener acceso al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

¡Perfecto! Acabamos de ver que, al usar el mismo principio básico mostrado en el primer video, podemos llevar a cabo lo que se conoce como la codificación binaria de una variable.

Y vimos además que en el caso de tener tres o más categorías a codificar podemos llevar a cabo lo que se conoce como la codificación one-hot, que junto con la codificación binaria nos permite representar variables categóricas haciendo uso de cantidades numéricas y que resultan siendo herramientas muy útiles en las fases de preparación de datos para un proyecto de Machine Learning.

Así que en este punto, con lo visto en este segundo módulo del curso, ya sabemos cómo extraer datos de una tabla usando la sentencia SELECT, cómo realizar el filtrado de datos con WHERE y cómo generar columnas categóricas usando la sentencia CASE.

En el próximo módulo veremos diferentes maneras de combinar datos en SQL, bien sea datos provenientes de una o de múltiples tablas.

Y en la próxima lección veremos el primer tipo de combinación de datos que se puede realizar en SQL: la unión de tablas usando JOIN.

Todas las lecciones del curso SQL Nivel Básico