Skip to content

Instantly share code, notes, and snippets.

@felipejoq
Last active December 17, 2023 19:01
Show Gist options
  • Save felipejoq/8da806933bd5bf7014c9023267dcdb8d to your computer and use it in GitHub Desktop.
Save felipejoq/8da806933bd5bf7014c9023267dcdb8d to your computer and use it in GitHub Desktop.
Desafío II - SQL: Consultas agrupadas

👨‍💻 SQL: Consultas Agrupadas

En este desafío se ponen a prueba algunos conocimientos SQL para hacer consultas con funciones de agrupación como SUM, COUNT, AVG y además las cláusulas ORDER BY o GRUP BY, etc. Todo el desafío queda explicado en este archivo PDF

🚀 Desarrollo del desafío

  1. ¿Cuántos registros hay?
SELECT COUNT(*)
FROM inscritos;
→ Resultado:

01-resultado


  1. ¿Cuántos inscritos hay en total?
SELECT SUM(cantidad) AS total_inscritos
FROM inscritos;
→ Resultado:

02-resultado


  1. ¿Cuál o cuáles son los registros de mayor antigüedad?
SELECT * 
FROM inscritos
WHERE fecha = (SELECT MIN(fecha) FROM inscritos);
→ Resultado:

03-resultado


  1. ¿Cuántos inscritos hay por día? (entendiendo un día como una fecha distinta de ahora en adelante)
SELECT fecha, SUM(cantidad) AS total_inscritos
FROM inscritos
GROUP BY fecha
ORDER BY fecha;
→ Resultado:

04-resultado


  1. ¿Cuántos inscritos hay por fuente?
SELECT fuente, SUM(cantidad)
FROM inscritos
GROUP BY fuente;
→ Resultado:

05-resultado


  1. ¿Qué día se inscribió la mayor cantidad de personas? ¿Cuántas personas se inscribieron en ese día?
SELECT fecha, SUM(cantidad) AS total_inscritos
FROM inscritos
GROUP BY fecha
ORDER BY total_inscritos DESC
LIMIT 1;
→ Resultado:

06-resultado


  1. ¿Qué días se inscribieron la mayor cantidad de personas utilizando el blog? ¿Cuántas personas fueron?
SELECT fecha, fuente, SUM(cantidad) AS total_inscritos
FROM inscritos
GROUP BY fecha, fuente
HAVING fuente = 'Blog'
ORDER BY total_inscritos DESC
LIMIT 1;
→ Resultado:

07-resultado


  1. ¿Cuál es el promedio de personas inscritas por día?
SELECT fecha, ROUND(AVG(cantidad), 2)
FROM inscritos
GROUP BY fecha;
→ Resultado:

08-resultado


  1. ¿Qué días se inscribieron más de 50 personas?
SELECT fecha, SUM(cantidad) AS total_inscritos
FROM inscritos
GROUP BY fecha
HAVING SUM(cantidad) > 50
ORDER BY SUM(cantidad) DESC;
→ Resultado:

09-resultado


  1. ¿Cuál es el promedio diario de personas inscritas a partir del tercer día en adelante, considerando únicamente las fechas posteriores o iguales a la indicada?
SELECT AVG(cantidad) AS promedio
FROM inscritos
WHERE fecha >= (SELECT fecha FROM inscritos ORDER BY fecha OFFSET 2 LIMIT 1);
→ Resultado:

10-resultado


ℹ️ Desafío desarrollado con PortgreSQL versión 14.9

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment