Rullst AcademyRullst Academy/Lección
Bases de datos y SQL I · Lección 08 / 12

Resumir y contar con cuidado

Usar GROUP BY, COUNT, SUM, COALESCE y HAVING sin ocultar grupos vacíos.

Rutas de aprendizaje18 min

Vamos a descubrir juntos

  1. 1

    GROUP BY reúne filas para resumir por material. Agrupa por identidad; solo label uniría ambos Orbit. Agrupa columnas mostradas sin agregar para evitar valores arbitrarios.

  2. 2

    COUNT(*) cuenta filas, incluida la conservada sin coincidencia del LEFT JOIN. COUNT(l.id) ignora NULL y cuenta préstamos relacionados. SUM(l.units) suma unidades, distinto de contar préstamos.

  3. 3

    SUM sin valores devuelve NULL en SQLite. COALESCE(SUM(l.units),0) usa cero si no hay préstamos abiertos. Esa interpretación pertenece al informe; no conviertas todo desconocido en cero.

  4. 4

    WHERE filtra filas antes de agrupar; HAVING filtra grupos. Revisa el informe completo antes de pedir disponibilidad menor o igual a cero. Conserva negativos: pueden revelar inconsistencias.

Tu mesa de datos

Nuestro modelo: kits.id ← loans.kit_id. Un material puede tener varios préstamos; nombres pueden repetirse. Solo usamos datos ficticios.

Predice antes de abrir la referencia. Muestra salida verificada del ejemplo original, no ejecuta tu texto. Ejecuta cambios con el kit en tu computadora.

-- Resumir y contar con cuidado
SELECT k.id, COUNT(l.id) AS open_loans, COALESCE(SUM(l.units),0) AS open_units FROM kits AS k LEFT JOIN loans AS l ON l.kit_id=k.id AND l.returned IS NULL GROUP BY k.id ORDER BY k.id;
Comparar con la salida de referencia
[
  {
    "columns": [
      "id",
      "open_loans",
      "open_units"
    ],
    "rows": [
      [
        1,
        1,
        1
      ],
      [
        2,
        1,
        2
      ],
      [
        3,
        1,
        1
      ],
      [
        4,
        0,
        0
      ]
    ]
  }
]

Ejecuta el comando en la carpeta extraída. Usa python3 en macOS/Ubuntu o py si es tu launcher Windows. Cada ejecución empieza en memoria; lee README.md para guardar archivos y practicar recuperación.

python lab.py run lesson.sql
Mis archivos y GitHub

El editor guarda tu borrador .sql en este navegador. Descárgalo y sustituye lesson.sql en el kit; en el proyecto final, availability.sql. El ZIP conserva el modelo original. GitHub envía solo el archivo confirmado, sin ejecutar SQL ni enviar la base.

Enlaces oficiales y siguiente paso

✦
TU MISIÓN

Usar GROUP BY, COUNT, SUM, COALESCE y HAVING sin ocultar grupos vacíos.

Ahora te toca

Taller de descubrimientos

Lee, predice y comprueba

Usar GROUP BY, COUNT, SUM, COALESCE y HAVING sin ocultar grupos vacíos.
Prepara tus respuestas y comprueba cuando estés listo.
Una pausa para entender

¿Qué expresión cuenta préstamos en LEFT JOIN?

Necesito una pista

COUNT(*) cuenta filas, incluida la conservada sin coincidencia del LEFT JOIN. COUNT(l.id) ignora NULL y cuenta préstamos relacionados. SUM(l.units) suma unidades, distinto de contar préstamos.

Cargando tu camino…

Llévatelo contigo

Compara COUNT(*) y COUNT(l.id) para Nova. Luego selecciona grupos con más de una unidad abierta y explica filas.

A tu ritmo

Mis archivos y GitHub

Cada lección puede convertirse en un registro propio: código, notas o un plan de práctica. Guardar un archivo en GitHub es opcional y no cambia tus XP.

Manual del alumno

El editor y las descargas se abren cuando esta lección esté disponible para tu cuenta. Revisa el acceso indicado abajo o vuelve al mapa de la ruta.

Comprobando tu acceso a esta lección…

Rullstpetbot

La IA puede equivocarse. Consulta el material de la lección.