¡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. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
3 Hrs
44 Min
11 Seg

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

19/36
Recursos

Aportes 33

Preguntas 1

Ordenar por:

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

Creo la profesora tuvo una equivocación en el min 4 donde se esta analizando el select, dice que el estudiante con ID 3 tiene 4 cursos pero para efectos de nuestra query seria al contrario ya que, como parámetros a traer en nuestro select es COURSEID y COUNT(STUDENTID), es decir que lo que nos muestra realmente es el ID de cada curso junto con la cantidad de estudiantes vinculados a ese curso. Es decir que lo que se dice que el estudiante con id 3 tiene 4 cursos inscritos es al contrario, la respuesta correcta seria que el curso con ID 4 tiene 3 estudiantes inscritos.
en el minuto 4:20 se distorsiona al vos con lo del vídeo. se esucha una cosa pero el vídeo muestra otra.
![](https://static.platzi.com/media/user_upload/funciones%20Count%20Sum%20y%20Avg-3c7107f5-9617-46ed-bab3-043124a0c63b.jpg)
```js -- Ejemplos -- Contar el número total de instructores SELECT COUNT(*) AS total_instructors FROM instructors; -- Contar el número de instructores con salario mayor a 50000 SELECT COUNT(*) AS high_salary_instructors FROM instructors WHERE salary > 50000; -- Calcular la suma total de todos los salarios SELECT SUM(salary) AS total_salary FROM instructors; --Calcular la suma total de las horas de duración de todos los cursos SELECT SUM(durationhours) AS total_duration FROM courses; --Calcular el salario promedio de los instructores SELECT AVG(salary) AS average_salary FROM instructors; -- Calcular la duración promedio de los cursos SELECT AVG(durationhours) AS average_duration FROM courses; ```
No es necesario poner comillas alrededor de los alias en una consulta SQL a menos que el alias contenga espacios o caracteres especiales SELECT first\_name AS fname, last\_name AS lname FROM people; SELECT first\_name AS "First Name", last\_name AS "Last Name" FROM people;
Cuando se está explica el GROUP BY, de la nada aparece un HAVING, creo que no era necesario aún mencionarlo. Este tipo de agrupaciones suelen causar mucha cuando se inicia en SQL, debía explicarse con cuidado. LA edición 10 de 10, pero el guion y el contenido no terminan de convencerme :/
Por aqui, team Excel 👩‍💻📊
SEGUNDO ERROR de la profesora, y en 2 clases seguidas, Haces mal la consulta en el HAVING y ademas., nunca explicas para que es el HAVING
Mi apunte de la clase📝 ![](https://static.platzi.com/media/user_upload/Clase19-699e6ead-319d-4ba6-93b6-904ee93cbe31.jpg)
Este vídeo no carga bien y tiene un salto en el video :(
Esta un poco desfasadomel audio
![]()MUY BUENA ESA DE SELECCIONAR Y LUEGO DARLE EJECUTAR DE HABERLO SABIDO DESDE UN PRINCIPIO 😶‍🌫️ ![](https://static.platzi.com/media/user_upload/Captura%20de%20pantalla%202024-06-24%20012647-9c4fd968-b5d0-4912-8558-cd003f5f66d8.jpg)
LAS CONSULTAS: `select b.COURSEID, a.coursename, count(*) as total_studentes` `from student_course b, courses a` `where b.COURSEID = a.COURSEID` `group by COURSEID;` `SELECT SUM(SALARY) AS SALARIO_TOTAL, AVG(SALARY) AS SALARIO_PROMEDIO` `FROM instructors`
De esta manera se puede ver el total de estudiantes por curso ```js SELECT course_id, COUNT(student_id) AS total_students FROM student_course GROUP BY course_id; ```SELECT course\_id, COUNT(student\_id) AS total\_students FROM student\_course GROUP BY course\_id;
Aqui les dejo otra manera de sacar el promedio, en ciertos escenarios me ha sido util, sobretodo en situaciones donde estan involucradas mas de una tabla. `SELECT ROUND(SUM(SALARY)/COUNT(SALARY)) as 'AVG' FROM INSTRUCTORS;`
Comparto mis apuntes de la clase \-- Funciones de Aritmética Básica en SQL (COUNT, SUM, AVG) SELECT COURSEID, count(STUDENTID) as CONTEO\_ESTUDIANTES from student\_course group by COURSEID; SELECT COURSEID, count(STUDENTID) as CONTEO\_ESTUDIANTES from student\_course group by COURSEID having count(STUDENTID) > 3; -- SELECT sum(SALARY) AS SALARY-- SUMAMOS EL VALOR TOTAL DE TODO LOS SALARIOS FROM instructors; SELECT sum(SALARY) AS SALARY\_SUM , AVG (SALARY) AS SALARY\_AVG -- SUMAMOS EL VALOR TOTAL DE TODO LOS SALARIOS FROM instructors /\* HAVING count(STUDENTID) > 3 Aquí es donde entra el HAVING. Esta cláusula filtra los resultados obtenidos después de la agrupación. En este caso, muestra solo aquellos cursos que tienen más de 3 estudiantes. Diferencia clave: Mientras WHERE se usa para filtrar antes de agrupar, HAVING filtra después de realizar la agrupación. En resumen, HAVING sirve para filtrar los resultados de funciones de agregación (como COUNT, SUM, etc.) después de haber hecho la agrupación con GROUP BY. La elección entre HAVING y WHERE depende de si necesitas filtrar los datos antes o después de hacer una agrupación (GROUP BY). Aquí tienes una guía rápida: Cuándo usar WHERE Antes de la agrupación: Se usa para filtrar filas antes de que se realicen las agregaciones. Filtra datos originales: Se aplica directamente sobre los datos sin agrupar. Ejemplo: Para ver solo estudiantes mayores de 20 años, podrías usar: sql Copiar código SELECT COURSEID, count(STUDENTID) as CONTEO\_ESTUDIANTES FROM student\_course WHERE AGE > 20 -- Filtra datos antes de agrupar GROUP BY COURSEID; Cuándo usar HAVING Después de la agrupación: Se usa para filtrar los resultados después de que las agregaciones se hayan calculado. Filtra resultados agregados: Es útil para filtrar en base a resultados de funciones agregadas como COUNT, SUM, AVG, etc. Ejemplo: Para ver solo los cursos con más de 3 estudiantes inscritos: sql Copiar código SELECT COURSEID, count(STUDENTID) as CONTEO\_ESTUDIANTES FROM student\_course GROUP BY COURSEID HAVING count(STUDENTID) > 3; -- Filtra después de agrupar Resumen Usa WHERE para filtrar filas antes de la agrupación. Usa HAVING para filtrar resultados después de aplicar funciones de agregación. \*/
un poco raro ese corte del having , de verdad se vuelve un poco complicado seguirle el ritmo al curso cuando ya estamos usando group by si es de dos clases mas adelante y dos test antes estabamos usando sentencias AS cuando no se han explicando en el curso, creo que deberian de verificar el orden en el que estan enseñando el curso
Obtener la cantidad de cursos a los que se ha inscrito cada estudiante SELECT students\_id, COUNT(courses\_id) AS total\_cursos FROM students\_courses GROUP BY students\_id;
```js Para AVG() -- El siguiente codigo muestra el promedio de la columna precios de la tabla productos SELECT AVG(Price) FROM Products; -- Puede darle un alias al resulta de la función AVG() SELECT AVG(Price) AS "Promedio_Precios" FROM Produts; -- Puedo usar SubQueries para usar el resultado de la función AVG() -- El siguiente codigo selecciona todas las columnas de la tabla Products -- Donde el precio es Mayor que el promedio de la columna Price de la tabla Products SELECT * FROM Products WHERE Price > (SELECT AVG(Price) FROM Products); ```
```js Para SUM() /* El siguiente codigo me retornara la suma total de la columna Quantity de la tabla OrderDetails*/ SELECT SUM(Quantity) FROM OrderDetails; -- Puedo usar un Alias para el resultado de la Suma total SELECT SUM(Quantity) AS "Suma_Quantity" FROM OrderDetails; -- El parametro dentro de la función suma también puede ser una expresión SELECT SUM(Quantity*10) AS "Suma_Quantity_*10) FROM OrderDetails; ```
```js Para COUNT() -- El siguiente codigo retornara el numero total de columnas en la tabla de productos SELECT COUNT(*) FROM Products; -- Tambien se puede especificar una columna en vez del asterisco /* El siguiente codigo me dara el total de columnas donde el nombre del producto No es NULL*/ SELECT COUNT(ProductName) FROM Products; -- Puedo ignorar duplicados en el conteo usando la palabra DISTINCT -- Me dara el total de precios que NO se repitan en la tabla de productos SELECT COUNT(DISTINCT Price) FROM Products; -- Le puedo dar un alias al total SELECT COUNT(*) AS "Total_Productos" FROM Products; ```
En el minuto 4:05 ella dice que el estudiante con ID 3 tiene 4 cursos incritos, pero en realidad, lo que significa el Query es que el curso de ID 4 tiene 3 estudiantes inscritos. El count cuenta las occurrencias dentro de Courseid, asi que COUNT (studentID) esta contando los estudiantes que que estan matriculados en CourseId, no tiene nada que ver con el ID del estudiante.
```js SELECT STUDENTID, COUNT(COURSEID) FROM STUDENT_COURSE GROUP BY STUDENTID ```SELECT STUDENTID, COUNT(COURSEID) FROM STUDENT\_COURSE GROUP BY STUDENTID
Alguien me puede explicar el HAVING COUNT ? es que no lo termino de entender
1. Solicitud de contar el monto bruto total de ventas del dia 24 del mes 8: `SELECT SUM(monto) as TOTAL_VENTAS_24_8 ` `FROM ventas` `where dia = 24 ` `and mes = 8;` 1. Contar la cantidad de ventas del dia 24 del mes 8: `SELECT COUNT(ID_VENTA) as cantidad_ventas ` `FROM ventas ` `WHERE dia = 24 ` `and mes = 8;` 1. Contar el promedio de ingresos brutos mensuales por ventas: `SELECT avg(monto) as promedio_mensual` `FROM ventas` `WHERE mes == 8;`
Comparto mi código con un redondeo a dos decimales del promedio: ```js SELECT SUM(SALARY) AS 'Salary', ROUND(AVG(SALARY),2) AS 'Average' FROM INSTRUCTORS; ```
Si se preguntan como hacer la primera consulta, pero de forma mas legible: ¿Cuantos alumnos estan inscritos a cada curso? ```js SELECT COURSENAME, COUNT(*) AS ENROLLED_STUDENTS FROM COURSES INNER JOIN STUDENT_COURSE ON COURSES.COURSEID = STUDENT_COURSE.COURSEID GROUP BY COURSENAME ```
COUNT La función `COUNT` se utiliza para contar la cantidad de valores en una columna. Puedes contar todos los registros, contar valores distintos o contar solo los registros que cumplen con una condición específica. ### Ejemplo: Supongamos que tienes una tabla `productos` y deseas contar la cantidad de productos por categoría. sqlCopy code \-- Contar la cantidad de productos por categoría SELECT categoria, COUNT(\*) AS total\_productos FROM productos GROUP BY categoria; \-- Contar la cantidad de productos por categoría, mostrando solo las categorías con más de 10 productos SELECT categoria, COUNT(\*) AS total\_productos FROM productos GROUP BY categoria HAVING COUNT(\*) > 10; SUM La función `SUM` se utiliza para sumar todos los valores numéricos en una columna. ### Ejemplo: Supongamos que tienes una tabla `ventas` y deseas obtener la suma total de las ventas por mes. sqlCopy code \-- Sumar el total de las ventas por mes SELECT mes, SUM(total\_venta) AS total\_ventas FROM ventas GROUP BY mes; \-- Sumar el total de las ventas por mes, mostrando solo los meses con ventas superiores a 1000 SELECT mes, SUM(total\_venta) AS total\_ventas FROM ventas GROUP BY mes HAVING SUM(total\_venta) > 1000; AVG La función `AVG` se utiliza para calcular el promedio de los valores numéricos en una columna. ### Ejemplo: Supongamos que tienes una tabla `empleados` y deseas calcular el salario promedio por departamento. sqlCopy code \-- Calcular el salario promedio por departamento SELECT departamento, AVG(salario) AS salario\_promedio FROM empleados GROUP BY departamento; \-- Calcular el salario promedio por departamento, mostrando solo los departamentos con un salario promedio superior a 50000 SELECT departamento, AVG(salario) AS salario\_promedio FROM empleados GROUP BY departamento HAVING AVG(salario) > 50000; Estos ejemplos muestran cómo utilizar `GROUP BY` para agrupar los resultados y `HAVING` para filtrar los resultados agrupados
Clase regular, aparece un where salvaje de la nada al rededor del minuto 4 y no entiendo porque escribe la query pero no la ejecuta.
***-- CONTAR LA CANTIDAD DE ESTUDIANTES POR CURSO*** SELECT COURSEID, COUNT(STUDENTID) FROM STUDENT\_COURSE GROUP BY COURSEID; ![](https://static.platzi.com/media/user_upload/image-6b48fce9-0228-4b3a-8490-97ff844782a8.jpg) ***Análisis*** 3 estudiantes hacen el curso con id = 1 2 estudiantes el curso con id= 2 y asi etc etc. **-- CONTAR LA CANTIDAD DE ESTUDIANTES POR CURSO, PERO SOLO AQUELLOS CURSOS DONDE HAY MAS DE DOS ESTUDIANTES INSCRITOS.** SELECT COURSEID, COUNT(STUDENTID) FROM STUDENT\_COURSE GROUP BY COURSEID HAVING COUNT(STUDENTID)>2; ![](https://static.platzi.com/media/user_upload/image-6ff32f79-fb69-4ea4-8163-d11cec701c44.jpg) Nota: HAVING viene siendo como un segundo WHERE pero se usa seguido de un GROUP BY y usando funciones de agregacion como COUNT, SUM, AVG, MIN, MAX.
![](https://static.platzi.com/media/user_upload/image-9efc6cb9-7f62-4bb3-a2e9-65ff9f474efe.jpg) MUY BUENA ESA DE SELECCIONAR Y LUEGO DARLE EJECUTAR
Hola a todos, soy nuevo en platzi. He obtenido varios diplomas y nunca he tenido problemas con los cursos ni con el contenido, pero la verdad es que me he llevado una primera mala experiencia con este curso. Espero que sea la única, ya que vengo de otras plataformas y nunca he tenido problemas ni he encontrado este tipo de errores. platzi no está comenzando, lleva años en el mercado y cuenta con una gran comunidad de la que me encanta ser parte. Por eso, estas cosas no deberían pasar. Muchos de los comentarios señalan que "parece que Platzi solo está haciendo cursos para llenar su catálogo", y si esto es cierto, sería una gran decepción, ya que platzi me encanta, pero estas situaciones no deberían ocurrir en una empresa tan experimentada. Espero que el equipo de platzi vea esto y, al menos, responda a los comentarios que se hacen respecto a este curso con unas disculpas o alguna respuesta.
Resultado de los ejercicios iniciales: ```txt SELECT course_id, COUNT(student_id) AS number_student_course FROM STUDENT_COURSE GROUP BY course_id SELECT COUNT(student_id) FROM STUDENT_COURSE WHERE course_id > 2 SELECT AVG (salary) AS AVG_SALARY FROM INSTRUCTORS SELECT COUNT(student_id) FROM STUDENTS WHERE last_name = 'Lopez' SELECT COUNT(instructor_id) FROM INSTRUCTORS WHERE salary > 50000 ```