¡El poder de los datos!

1

¡El poder de los datos!

Introducción a las bases de datos relacionales

2

Buenas prácticas de bases de datos con SQL

3

Tipos de datos en SQL

4

¿Cómo crear una base de datos en SQL?

5

Práctica: Tu primera consulta en bases de datos

6

Historia y Evolución de SQL

7

Práctica: Creación de Tablas en SQL (CREATE TABLE)

Manipulación de Datos

8

Insertando Datos con SQL (INSERT)

9

Consultas y Selecciones en SQL (SELECT)

10

Práctica: SELECT en SQL

11

Actualización de Datos con SQL (UPDATE)

12

Eliminación de Datos con SQL (DELETE)

13

Práctica: CRUD con SQL

Manipulación Avanzada de Datos

14

Instalación de MySQL Server y MySQL Workbench

15

¿Qué es la cláusula WHERE de SQL?

16

Filtrar y Ordenar Datos en SQL (LIKE)

17

Práctica: Filtrar Datos con WHERE en SQL

18

Cláusulas de Comparación Textual en SQL (AND, NULL, IN, NOT)

19

Funciones de Aritmética Básica en SQL (COUNT, SUM, AVG)

20

Funciones de Aritmética Básica en SQL (MIN, MAX)

Agrupación de Datos

21

Agrupación de Datos en SQL: GROUP BY, HAVING y CASE para Análisis Avanzado

22

Práctica: Agrupamiento y Ordenamiento de Datos

23

Tipos de JOIN en SQL

24

¿Cómo funciona INNER JOIN, LEFT JOIN, RIGHT JOIN y FULL JOIN?

25

Práctica: LEFT JOIN en SQL

Transformación de Datos

26

Vistas Materializadas en SQL: Como optimizar tus consultas y reportes.

27

Práctica: Crear Vistas Materializadas en SQL

28

Optimización de Bases de Datos con SQL: CREATE INDEX y TRIGGER

29

Vistas Materializadas y Temporales en SQL

30

Expresiones de Tablas Comunes (CTE) en SQL

Procedimientos Almacenados

31

Procedimientos Almacenados en SQL

32

Procedimientos Almacenados en SQL: Gestión de Variables y Manejo de Excepciones

Administración de Base de Datos

33

Respaldos y Restauración de Bases de Datos

34

Seguridad en Bases de Datos SQL

Análisis de Datos Avanzados

35

Potenciando los Datos en la Nube: Data Science, Big Data, ML e AI

36

SQL para Análisis de Datos: Primeros pasos con Power BI

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

14 Días
10 Hrs
26 Min
14 Seg

Agrupación de Datos en SQL: GROUP BY, HAVING y CASE para Análisis Avanzado

21/36
Recursos

Aportes 67

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

El `HAVING` en SQL se utiliza junto con la cláusula `GROUP BY` para filtrar resultados después de haber agrupado datos usando `GROUP BY`. Mientras que `WHERE` se usa para filtrar filas antes de agrupar, `HAVING` se utiliza para filtrar grupos después de que se ha realizado la agrupación.
No conocía las estructuras: * CASE * WHEN * THEN * END Muchas gracias Caro 👩‍💻
`SELECT ` ` AGE, ` ` nombre,` ` CASE ` ` WHEN nombre = 'Maria' THEN 'TEAM A'` ` WHEN AGE BETWEEN 18 AND 20 THEN 'TEAM A'` ` ELSE 'TEAM B'` ` END AS TEAM,` ` CASE` ` WHEN nombre = 'Maria' AND AGE NOT BETWEEN 18 AND 20 THEN 'TEAM C'` ` ELSE 'TEAM B'` ` END AS TEAM_C` `FROM STUDE`NTS;
![](https://static.platzi.com/media/user_upload/HAVING-2dad3170-ecc3-4856-b13f-a46f18eb9cfc.jpg)
Después de enredarme como un tornillo, creo que conseguí entender la idea. Pero no se parece a algunas de las soluciones de mis compañeros. Igual ...Quedo con la duda... ```js SELECT studentid, age, CASE WHEN FIRSTNAME = 'Maria' OR AGE BETWEEN 18 AND 20 THEN 'TEAM_A' WHEN AGE > 20 THEN 'TEAM_B' ELSE 'TEAM_C' END AS TEAM FROM STUDENTS; ```
![](https://static.platzi.com/media/user_upload/GROUP%20BY-bc2b1da5-e800-4f77-b5d2-e6a3e04b0177.jpg)
Importante: Respecto a **CASE WHEN**, es importantísimo aprenderlo, sin embargo... Si la opción de respuesta es binaria es mas óptimo computacionalmente usar **IF()**, puesto que solo hay dos opciones, una si se cumple, otra si no. Por otro lado, si hay múltiples opciones, es mejor utilizar **CASE WHEN**, puesto que usar IF derivaría en los famosos IF anidados (código spaghetti). Espero que esta info te sirva. :)
Resumen de la clase 📋 ![](https://static.platzi.com/media/user_upload/Clase21a-f942ea86-a875-4be6-9c29-77466cc54893.jpg)
¡Hola! Comparto mi solución al ejercicio planteado por la profesora. Gracias. ![](https://static.platzi.com/media/user_upload/Ejercicio_Platzi-0108bf23-c2ab-4c3a-a53a-df4aa0cff8b4.jpg)
Hola! Yo entendí esto: Si se llama María va al equipo "A", sino al equipo "C", pero si tiene más de 20 años al equipo "B". Lo que no me queda claro es que pasa en el caso de que se llame maría y tenga más de 20 años, debería ir al equipo A o B? Saludos! `SELECT NOMBRE, EDAD, ` `CASE WHEN NOMBRE = 'Maria' THEN 'TEAM A' ` `WHEN EDAD > 20 THEN 'TEAM B' ` `ELSE 'TEAM C' ` `END AS TEAM ` `FROM STUDENTS ` `GROUP BY EDAD, NOMBRE;` Resultado: ![](https://i.ibb.co/8zLZ9q3/Captura-de-pantalla-2024-06-25-a-la-s-19-15-08.png)
```js SELECT AGE AS 'Age', COUNT(AGE) AS 'Total', GROUP_CONCAT(FIRSTNAME ORDER BY FIRSTNAME ASC SEPARATOR ', ') AS 'Firstnames', CASE WHEN FIRSTNAME LIKE('%i%') THEN 'Team I' WHEN AGE BETWEEN 19 AND 21 THEN 'Team A' ELSE 'Team B' END AS 'Team' FROM STUDENTS GROUP BY AGE, CASE WHEN FIRSTNAME LIKE('%i%') THEN 'Team I' WHEN AGE BETWEEN 19 AND 21 THEN 'Team A' ELSE 'Team B' END; ```
```js SELECT carrera_id, nombre, CASE WHEN nombre = 'Wanda' THEN 'TEAM B' WHEN carrera_id BETWEEN 14 AND 24 THEN 'TEAM A' ELSE 'TEAM C' END AS equipo FROM alumnos; ``` SELECT carrera\_id, nombre, CASE WHEN nombre = 'Wanda' THEN 'TEAM B' WHEN carrera\_id BETWEEN 14 AND 24 THEN 'TEAM A' ELSE 'TEAM C' END AS equipo FROM alumnos;
![](https://static.platzi.com/media/user_upload/image-487718e3-a465-40dc-a145-c4e049193e8e.jpg)
select age ,firstname, case when firstname = 'Maria' then ' Team A' when age between 18 and 20 then 'Team A' else 'Team B' end as 'team' from students group by age,firstname;
```js SELECT AGE, FIRSTNAME, case when AGE between 18 and 20 or FIRSTNAME = 'Jane' then 'TEAM A' when AGE between 20 and 24 then 'TEAM B' else 'Team C' end as TEAMS FROM TSTUDENTS GROUP BY AGE, FIRSTNAME ```
Entendí que el reto plantea lo siguiente: * Los estudiantes con edades entre 18 y 20 años, cuyo nombre sea María, estarán en el grupo "A". * Los estudiantes con edades entre 18 y 20 años, independientemente de su nombre, estarán en el grupo "C". * Si no se cumple ninguna de las condiciones anteriores (es decir, si el estudiante no se llama María y tiene una edad menor a 18 o mayor a 20 años), pertenecerá al grupo "B". A continuación, presento mi solución: ```js SELECT AGE, FIRST_NAME, CASE WHEN AGE BETWEEN 18 AND 20 AND FIRST_NAME = "Maria" THEN "TEAM_A" WHEN AGE BETWEEN 18 AND 20 THEN "TEAM_C" ELSE "TEAM_B" END AS "TEAM" FROM STUDENTS GROUP BY AGE, FIRST_NAME; ```
El rendimiento de `COUNT(1)` y `COUNT(*)` es generalmente similar en la mayoría de los sistemas de bases de datos. Ambas funciones cuentan el número de filas. Sin embargo, en algunos contextos, `COUNT(1)` puede ser ligeramente más rápido porque no tiene que verificar la existencia de columnas, solo evalúa una constante. Sin embargo, en la práctica, la diferencia es mínima y depende del optimizador de la base de datos. Es recomendable utilizar `COUNT(*)` para contar filas, ya que es más explícito y estándar.
El HAVING en SQL se utiliza para filtrar los resultados de un grupo creado por GROUP BY, mientras que WHERE filtra filas antes de la agrupación. **Ejemplo de uso de HAVING:** ```sql SELECT curso_id, COUNT(estudiante_id) AS cantidad_estudiantes FROM matriculas GROUP BY curso_id HAVING COUNT(estudiante_id) > 2; ``` Este ejemplo muestra los cursos con más de 2 estudiantes. **Ejemplo de uso de WHERE:** ```sql SELECT estudiante_id, curso_id FROM matriculas WHERE edad > 20; ``` Este consulta filtra estudiantes mayores de 20 antes de cualquier agrupación.
DEJO MI RETO SELECT AGE, FIRSTNAME, CASE WHEN AGE BETWEEN 22 AND 29 AND FIRSTNAME = 'CARMENZA' THEN 'TEAM A' WHEN AGE > 30 THEN 'TEAM B' ELSE 'TEAM C' END AS CATEGORIZACION, COUNT(*) FROM STUDENTS GROUP BY AGE, FIRSTNAME;
Equipo de platzi, hay una duplicación de la voz en el minuto 5:31.
Les comparto mi codigo `SELECT ` ` ``AGE,` ` FIRSTNAME,` ` CASE WHEN AGE BETWEEN 18 AND 20 THEN 'TEAM A' ELSE 'TEAM B' END AS TEAM,` ` ``CASE WHEN FIRSTNAME = 'MARIA' AND AGE NOT BETWEEN 18 AND 20 THEN 'TEAM A' ELSE 'TEAM C' END AS TEAM_C` `FROM ` ` ``STUDENTS`
Dejo el reto SELECT AGE, CASE WHEN AGE between 18 AND 20 THEN 'TEAM A' WHEN FIRSTNAME LIKE 'MARIA' THEN 'TEAM A' ELSE 'TEAM C' END AS EQUIPO FROM STUDENTS group by AGE,FIRSTNAME;
SELECT FIRSTNAME, LASTNAME, CASE WHEN AGE BETWEEN 18 AND 20 THEN 'TEAM A' ELSE 'TEAM B' END AS TEAM FROM STUDENTS ORDER BY AGE ASC; Use esta sentencia para poder realizar bien el ordenamiento de los datos, en ella se pone a prueba lo de la clase dividiendo en los dos grupos, agregamos un alias para que aparezca solo TEAM, procedemos a hacer el ordenamiento acorde a la edad de forma descendente, esto igual nos permite que sea correcta nuestra consulta. Me parece una forma valida de presentar los datos, si es que trabajas con grupos de personas y no quieres mostrar sus ID, si no sus nombres, de igual forma me de curiosidad si puedes concatenar nombres como en los lenguajes de programación. Saludos.
Porque mejor no especifican primero todas las estructuras y las palabras reservadas para luego plantear los escenarios?
SELECT AGE, CASE WHEN AGE BETWEEN 20 AND 35 THEN 'TEAM A' WHEN FIRSTNAME = 'Jaime' THEN 'TEAM C' ELSE 'TEAM B'END AS 'GRUPO' FROM STUDENTS GROUP BY AGE,FIRSTNAME;
`Es muho más facil usar el IF(condicion,true,false)` `SELECT IF(AGE BETWEEN 18 AND 20,'TEAM A','TEAM B') FROM STUDENTS`
SELECT AGE AS Edad, FIRSTNAME AS Nombre, CASE WHEN AGE < 22 THEN 'Jovenes' WHEN AGE < 24 THEN 'Adolecente' WHEN AGE > 25 AND FIRSTNAME LIKE 'Lucas' THEN 'Ancestro Fundador' ELSE 'viejos' END AS 'Clasificación' FROM students GROUP BY age, FIRSTNAME;
`SELECT AGE AS EDAD, FIRST_NAME AS NOMBRE, ` `CASE ` ` ``WHEN AGE BETWEEN 18 AND 20 OR FIRST_NAME = 'Maria' THEN 'TEAM A'` ` ``WHEN AGE > 20 THEN 'TEAM B' ` ` ELSE 'TEAM C'` `END AS EQUIPO` `FROM STUDENTS` `GROUP BY AGE;`
```js -- Syntaxis estructura CASE CASE WHEN condition1 THEN result1 WHEN condition2 THEN resutl2 WHEN condition3 THEN result3 ELSE result; END; -- El siguiente codigo llama las columnas SALARY, LASTNAME, FIRSTNAME -- Y evalua las tres opciones dadas en el CASE -- El resultado agregara una caolumna llamada 'textoCantidad' -- El WHERE filtrara SELECT SALARY, LASTNAME, FIRSTNAME, CASE WHEN SALARY >= 30 THEN 'El salario es mayor o igual a 30' WHEN SALARY <= 30 THEN 'El salario es menor o igual a 30' ELSE 'Ninguna de las condiciones se cumple' END AS textoCantidad WHERE FIRSTNAME LIKE 'R%' FROM instructors; ```
No me quedó claro si todas las Marias van al equipo A o si solo las Marias entre 18 y 20. `SELECT firstname, age, CASE ` `WHEN age BETWEEN 18 AND 20` `THEN ` `CASE` `WHEN firstname = 'Maria' ` `THEN 'Team A' ` `ELSE 'Team C' ` `END` `ELSE 'Team B' ` `END` `FROM students;` `SELECT firstname, age, ` `CASE WHEN firstname = 'Maria' ` `THEN 'Team A' ` `ELSE` `CASE WHEN age BETWEEN 18 AND 20 ` `THEN 'Team C' ` `ELSE 'Team B' ` `END` `END` `FROM students;`
SELECT FIRSTNAME, AGE, CASE WHEN FIRSTNAME='*nombre*' AND AGE BETWEEN 18 AND 20 THEN 'TEAM C' WHEN FIRSTNAME='*nombre*' OR AGE BETWEEN 18 AND 20 THEN 'TEAM A' ELSE 'TEAM B' END AS 'TEAM' FROM STUDENTS
Yo entendí el ejercicio de este modo (Confirmen o contradigan, por favor 🙌): ```js SELECT FIRSTNAME, AGE, CASE WHEN FIRSTNAME = 'MARIA' AND AGE BETWEEN 18 AND 20 THEN 'TEAM A' WHEN AGE > 20 THEN 'TEAM B' ELSE 'TEAM C' END AS TEAM FROM STUDENTS ORDER BY TEAM ASC; ```
Yo lo entendí de esta forma: TEAM A -PERSONAS QUE SE LLAMAN MARIA -PERSONAS CON LA EDAD ENTRE 18 Y 20 TEAM B PERSONAS QUE SON MAYORES DE 20 Y QUE NO SE LLAMAN MARIA TEAM C PERSONAS QUE NO SE LLAMAN MARIA Y QUE TIENE UNA EDAD MENOR A 18 AÑOS SELECT AGE, FIRST\_NAME, CASE WHEN AGE BETWEEN 18 AND 20 THEN 'TEAM A' WHEN FIRST\_NAME='Maria' THEN 'TEAM A' WHEN AGE>20 THEN 'TEAM B' WHEN FIRST\_NAME!='Maria' THEN 'TEAM C' END AS TEAM FROM STUDENTS;
El having tiene la misma estructura de un where pero se debe usar inmediatamente del group by y es justamente para definir clausulas de agrupacion por condicionales
Buenas noches. Aqui les mando el reto de la profesora. Lo mejore un poco. Espero que este bien. ![](https://static.platzi.com/media/user_upload/PASO%204%20-%20RESOLVER%20RETO%20DE%20LA%20PROFE-41f71e6b-6bea-483e-8dbb-3e30f5836f5c.jpg)
No sabia que se podia usar el group by sin una funcion de agregacion, unicamente con que el campo sea numerico se puede agrupar :O
`SELECT *` `FROM` STUDENTS `WHERE AGE BETWEEN 18 AND 20` `GROUP BY` ` CASE` ` WHEN NAME = 'María' AND TEAM = 'A' THEN 'A'` ` ELSE 'B'` ` END`
`SELECT AGE, STUDENTID,` ` CASE ` ` WHEN AGE BETWEEN 18 AND 21 THEN 'TEAM A'` ` ELSE 'TEAM B'` ` END AS 'TEAM',` ` CASE ` ` WHEN FIRSTNAME = 'BOB' THEN 'TEAM C'` ` ELSE NULL` ` END AS 'SPECIAL_TEAM'` `FROM STUDENTS;`
SELECT FIRSTNAME, AGE, CASE WHEN FIRSTNAME = 'Maria' THEN 'TEAM A' WHEN AGE > 22 THEN 'TEAM B' ELSE 'TEAM C' END FROM STUDENTS
Como TIP, también le pueden poner un alias a la sentencia CASE, cuando finalicen con END, lo pueden colocar así: `SELECT AGE,` `CASE WHEN AGE BETWEEN 18 AND 20 THEN` `'TEAM A'` `ELSE` `'TEAM B'` `END AS 'TEAMS'` `FROM STUDENTS` `GROUP BY AGE;` Saludos
Mi respuesta es SELECT first\_name, age, CASE WHEN first\_name = 'John' AND age between 18 AND 25 THEN 'TEAM A' WHEN first\_name != 'John' AND age between 18 AND 25 THEN 'TEAM C' ELSE 'TEAM B' END FROM STUDENTS GROUP BY age, first\_name;
SELECT FIRSTNAME AS NOMBRE, AGE AS EDAD, CASE WHEN AGE BETWEEN 18 AND 20 AND FIRSTNAME = 'Maria' THEN 'TEAM A' WHEN AGE BETWEEN 18 AND 20 THEN 'TEAM C' ELSE 'TEAM B' END AS TIPO\_DE\_TEAM FROM STUDENTS GROUP BY FIRSTNAME,AGE
`SELECT edad, ` ` CASE ` ` WHEN (edad BETWEEN 18 AND 30) OR (nombre_persona = 'Juan') THEN 'Mayor' ` ` ELSE 'Menor' ` ` END AS clasificacion` `FROM personas;`
`SELECT ` `firstname,` ` CASE ` ` WHEN age BETWEEN 35 AND 40 THEN 'team_a' ` ` ELSE 'team_b' ` ` END AS team,` ` COUNT(*) AS num_members` `FROM ` ` professors` `GROUP BY ` ` team` `ORDER BY ` ` team;` ### Explicación: * **CASE**: Evalúa la condición de edad para asignar a los profesores a `team_a` o `team_b`. * **COUNT(\*) AS num\_members**: Cuenta cuántos profesores están en cada equipo y etiqueta esa cantidad como `num_members`. * **GROUP BY team**: Agrupa los resultados por el valor del equipo (`team_a` o `team_b`), de modo que puedas contar el número de miembros en cada equipo. * **ORDER BY team**: Ordena los resultados por el nombre del equipo. Esta query te mostrará cuántos miembros tiene cada equipo (`team_a` y `team_b`) en la tabla `professors`.
Sintaxis básica CASE: < SELECT column1, column2, CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE resultN END AS alias\_name FROM table\_name; \>
SELECT t.name as teacher, sum(n\_reviews) as total\_reviews FROM courses cright join teachers t on t.id = c.teacher\_id group by t.namehaving total\_reviews > 0order by total\_reviews desc
\### CASE WHEN \> La estructura `CASE WHEN > THEN > ELSE >AND` es como un if-else de un lenguaje de programación, sirve para ejecutar \> acciones determinadas cada que se cumpla la validación y si no ejecute otras acciones. \*\*sintaxis\*\*: ```mysql SELECT AGE, CASE WHEN AGE BETWEEN 18 AND 20 THEN 'TEAM A' ELSE 'TEAM B' END FROM STUDENTS ```
![]()![](https://static.platzi.com/media/user_upload/image-4d485944-550b-477e-9c04-ddc72a0f9141.jpg)```js ```
![](https://static.platzi.com/media/user_upload/image-15923d42-70dd-4388-987c-2552518e4c74.jpg)
Algo que aprendí es que al asignarle un nombre a la sentencia de CASE WHEN luego puede ordenarse en base al nombre asignado. ```python select case when age between 24 and 25 or FIRSTNAME='Maria' then 'TEAM A'else 'TEAM B' end as 'Grupos', count(age) as 'Cantidad por grupo' from students group by Grupos ```
```jsx select firstname, age, case when age between 24 and 25 or FIRSTNAME='Maria' then 'TEAM A'else 'TEAM B' end from students; ```select firstname, age, case when age between 24 and 25 or FIRSTNAME='Maria' then 'TEAM A'else 'TEAM B' end from students;
SELECT AGE, FIRSTNAME, CASE WHEN FIRSTNAME LIKE '%Maria' THEN "TEAM A" WHEN AGE BETWEEN 18 AND 20 THEN "TEAM A" ELSE "TEAM B" END AS TEAM FROM STUDENTS GROUP BY AGE, FIRSTNAME
```js SELECT FIRSTNAME, AGE, CASE WHEN FIRSTNAME = 'Alice' AND AGE BETWEEN 18 AND 20 THEN 'TEAM A' WHEN FIRSTNAME = 'Alice' AND AGE > 20 THEN 'TEAM B' ELSE 'TEAM C' END AS TEAM FROM STUDENTS GROUP BY FIRSTNAME, AGE; ```SELECT FIRSTNAME, AGE, CASE WHEN FIRSTNAME = 'Alice' AND AGE BETWEEN 18 AND 20 THEN 'TEAM A' WHEN FIRSTNAME = 'Alice' AND AGE > 20 THEN 'TEAM B' ELSE 'TEAM C' END AS TEAM FROM STUDENTS GROUP BY FIRSTNAME, AGE;
```txt SELECT AGE, FIRSTNAME, CASE WHEN AGE BETWEEN 18 AND 20 AND FIRSTNAME = 'MICHAEL' THEN 'TEAM A' WHEN AGE NOT BETWEEN 18 AND 23 AND FIRSTNAME != 'MICHAEL' THEN 'TEAM C' ELSE 'TEAM B' END AS TEAM FROM STUDENTS; ```SELECT AGE, FIRSTNAME, CASE WHEN AGE BETWEEN 18 AND 20 AND FIRSTNAME = 'MICHAEL' THEN 'TEAM A' WHEN AGE NOT BETWEEN 18 AND 23 AND FIRSTNAME != 'MICHAEL' THEN 'TEAM C' ELSE 'TEAM B' END AS TEAM FROM STUDENTS;
SELECT AGE, FIRSTNAME, CASE WHEN AGE>21 THEN 'TEAM B' WHEN FIRSTNAME='Maria' THEN 'TEAM A' ELSE 'TEAM C'END AS EQUIPOS FROM STUDENTS ORDER BY EQUIPOS;
```txt mysql> SELECT -> AGE, -> FIRSTNAME, -> CASE -> WHEN AGE BETWEEN 18 AND 20 THEN 'TEAM A' -> WHEN FIRSTNAME LIKE '%MARIA%' THEN 'TEAM A' -> WHEN AGE > 20 THEN 'TEAM B' -> ELSE 'TEAM C' -> END AS TEAM -> FROM -> STUDENTS -> GROUP BY -> AGE, -> FIRSTNAME; +------+------------+--------+ | AGE | FIRSTNAME | TEAM | +------+------------+--------+ | 18 | Donnamarie | TEAM A | | 18 | Krissie | TEAM A | | 18 | Verena | TEAM A | | 18 | Marabel | TEAM A | | 19 | Marla | TEAM A | | 19 | Diarmid | TEAM A | | 19 | Kassi | TEAM A | | 20 | Toddie | TEAM A | | 20 | Hazlett | TEAM A | | 20 | Raul | TEAM A | | 20 | Osmund | TEAM A | | 20 | Elisha | TEAM A | | 17 | Sollie | TEAM C | | 17 | Kalli | TEAM C | | 17 | Francklyn | TEAM C | | 17 | Charles | TEAM C | | 17 | Phaidra | TEAM C | | 16 | Patti | TEAM C | | 16 | Mamie | TEAM C | | 16 | Alika | TEAM C | +------+------------+--------+ 20 rows in set (0.00 sec) mysql> ```mysql> SELECT -> AGE, -> FIRSTNAME, -> CASE -> WHEN AGE BETWEEN 18 AND 20 THEN 'TEAM A' -> WHEN FIRSTNAME LIKE '%MARIA%' THEN 'TEAM A' -> WHEN AGE > 20 THEN 'TEAM B' -> ELSE 'TEAM C' -> END AS TEAM -> FROM -> STUDENTS -> GROUP BY -> AGE, -> FIRSTNAME; +------+------------+--------+ | AGE | FIRSTNAME | TEAM | +------+------------+--------+ | 18 | Donnamarie | TEAM A | | 18 | Krissie | TEAM A | | 18 | Verena | TEAM A | | 18 | Marabel | TEAM A | | 19 | Marla | TEAM A | | 19 | Diarmid | TEAM A | | 19 | Kassi | TEAM A | | 20 | Toddie | TEAM A | | 20 | Hazlett | TEAM A | | 20 | Raul | TEAM A | | 20 | Osmund | TEAM A | | 20 | Elisha | TEAM A | | 17 | Sollie | TEAM C | | 17 | Kalli | TEAM C | | 17 | Francklyn | TEAM C | | 17 | Charles | TEAM C | | 17 | Phaidra | TEAM C | | 16 | Patti | TEAM C | | 16 | Mamie | TEAM C | | 16 | Alika | TEAM C | +------+------------+--------+ 20 rows in set (0.00 sec) mysql>
Ejercicio de la clase: ```js -- Ejercicio agregando otra condicion al team a SELECT AGE, CASE WHEN AGE BETWEEN 18 AND 20 AND FIRSTNAME = "Maria" THEN 'TEAM A' WHEN AGE BETWEEN 18 AND 20 THEN 'TEAM C' ELSE 'TEAM B' END AS TEAM FROM STUDENTS; ```
![](https://static.platzi.com/media/user_upload/image-a14c10d3-d382-4c76-bc6f-a6e18de16088.jpg)
select AGE, FIRSTNAME, case when age between 18 and 20 then 'TEAM A' else 'TEAM B' END, case when firstname ='John' then 'TEAM C' END from students group by AGE,FIRSTNAME; SELECT AGE, FIRSTNAME, CASE WHEN age BETWEEN 18 AND 20 THEN 'TEAM A' ELSE 'TEAM B'END AS TEAM, CASE WHEN firstname = 'John' THEN 'TEAM C'END AS TEAM\_C FROM students WHERE (firstname != 'John' OR (firstname = 'John' AND age NOT BETWEEN 18 AND 20)) GROUP BY AGE, FIRSTNAME;
![](https://static.platzi.com/media/user_upload/image-e01b32b5-2162-4bed-bb75-aace66d11cdf.jpg)
```js SELECT AGE, FIRSTNAME, CASE WHEN AGE BETWEEN 18 AND 20 AND FIRSTNAME LIKE 'M%' THEN 'TEAM A' WHEN AGE > 20 THEN 'TEAM B' WHEN FIRSTNAME NOT LIKE 'M%' THEN 'TEAM C' END AS TEAMS FROM students; ```SELECT AGE, FIRSTNAME, CASE WHEN AGE BETWEEN 18 AND 20 AND FIRSTNAME LIKE 'L%' THEN 'TEAM A' WHEN AGE > 20 THEN 'TEAM B' WHEN FIRSTNAME NOT LIKE 'M%' THEN 'TEAM C' END AS TEAMS FROM students;
```python SELECT AGE, FIRSTNAME, CASE WHEN AGE BETWEEN 18 AND 20 AND FIRSTNAME LIKE 'L%' THEN 'TEAM A' WHEN AGE > 20 THEN 'TEAM B' WHEN FIRSTNAME NOT LIKE 'M%' THEN 'TEAM C' END AS TEAMS FROM students; ```
```js -- RETO SELECT age, firstname, lastname, CASE WHEN age BETWEEN 18 AND 20 THEN 'TEAM A' ELSE 'TEAM B' END AS team FROM STUDENTS GROUP BY age, firstname, lastname ORDER BY age, firstname, lastname; ```
SELECT age, COUNT(\*) AS count, CASE WHEN age BETWEEN 18 AND 20 THEN 'Team A' ELSE 'Team B' END AS TEAMS FROM students GROUP BY age ORDER BY age ASC;
Esto entendí 1. Si esta entre 18 y 20 años es Team A 2. Si Se llama Maria y tiene entre 18 y 20 es team A 3. Si Se llama Maria y tiene mas de 20 es team C 4. Si tiene más de 20 es team B select Firstname, age, Case when Firstname = 'Maria' And Age between 18 and 20 then 'Team A' when Age between 18 and 20 then 'Team A' when Age >20 and Firstname != 'Maria' then 'Team B' Else 'Team C' End As Team From Students; Teniendo en cuenta que si hay datos fuera de esos filtros seran team c
SELECT AGE, FIRSTNAME, CASE WHEN AGE BETWEEN 18 AND 20 THEN 'TEAM A' ELSE 'TEAM B' END AS TEAM, CASE WHEN FIRSTNAME="Emily" THEN 'TEAM A' ELSE 'TEAM C' END AS TEAM FROM students GROUP BY AGE;
`SELECT ` ` AGE, ` ` CASE ` ` WHEN nombre = 'Maria' THEN 'TEAM C'` ` WHEN AGE BETWEEN 18 AND 20 THEN 'TEAM A'` ` ELSE 'TEAM B'` ` END AS TEAM` `FROM STUDENTS` `GROUP BY AGE, nombre;`