Resumen del curso/Haz que perdure2 de 3
Proyecto final: encuentra las seis consultas incorrectas
Proyecto final: encuentra las seis consultas incorrectas
Diez consultas se ejecutan sin error y exactamente seis son incorrectas. Encuéntralas, nombra el fallo y corrige cada una.
La auditoría del proyecto final
El proyecto incluye diez consultas en queries/audit-lab/, llamadas q01.sql a q10.sql. Todas se ejecutan sin errores y devuelven una respuesta ordenada, y cada una lleva su pregunta de negocio en un comentario al principio. Exactamente seis de las diez son incorrectas. Las otras cuatro son correctas, y eso importa igualmente - quien marca las diez ha aprendido sospecha, no auditoría. Parte de la habilidad consiste en dejar tranquila una consulta correcta.
Para cada consulta, da un veredicto: correcta o incorrecta. Si es incorrecta, nombra la clase de fallo, escribe una consulta corregida, registra el número incorrecto y el correcto, y anota qué representaba una fila antes y después de tu corrección.
Una advertencia. docs/known-defects.md describe lo que está mal deliberadamente en los datos, que es distinto de lo que está mal en estas consultas. Leerlo esperando encontrar veredictos te confundirá. La clave de respuestas está al final de esta página, deliberadamente fuera del repositorio, para que no puedas abrirla por accidente antes de emitir tus veredictos.
Las clases de fallo
Cada consulta incorrecta falla de una manera identificable, y cada una de estas seis aparece exactamente una vez:
- Una multiplicación de filas en una unión que infla una medida de la cabecera del pedido.
- Un filtro
!=oINque elimina silenciosamenteorder_statusNULL. - La columna de ingresos equivocada,
unit_pricecuando debía usarsenet_price. - Un
BETWEENsobre una columna de marca de tiempo que elimina el último día. - Un
INNER JOINa una dimensión que elimina filas con claves huérfanas. - Un
DISTINCTque oculta una fila duplicada de dimensión.
Tu tarea
Ejecuta cada consulta y después aplica la lista de siete puntos de «Audita lo que escribió». Copia queries/audit-lab/findings-template.md a queries/audit-lab/findings.md y escribe una sección por consulta: el veredicto, la clase de fallo si es incorrecta, la consulta corregida, ambos números y qué representaba una fila antes y después de tu corrección. No cambies los archivos de consulta.
Rúbrica
Puntúate sobre 10. Diez sobre diez significa que el proyecto final cumple los requisitos del curso.
| Área | Puntos | Evidencia |
|---|---|---|
| Veredictos correctos | 3 | Las diez están clasificadas correctamente, incluidas las cuatro correctas |
| Nombre del fallo | 2 | Cada consulta incorrecta lleva la clase de fallo que realmente aplica |
| Consultas corregidas | 2 | Cada corrección se ejecuta y devuelve el número correcto |
| Ambos números indicados | 1 | El número incorrecto y el correcto aparecen en cada hallazgo |
| Calidad del razonamiento | 1 | Cada hallazgo dice qué representaba una fila antes y después de la corrección |
| Sin falsos positivos | 1 | Las cuatro consultas correctas no se «corrigen» |
Extensiones opcionales
- Termina la parte de clientes de la pregunta central: audita la unión a
customersque encuentra qué clientes impulsaron el crecimiento de las categorías ganadoras, usando lo que q09 te enseñó a comprobar. - Pide al agente que audite las mismas diez consultas y compara sus hallazgos con los tuyos. Cuando discrepasteis, ¿quién tenía razón?
- Escribe una comprobación de calidad de Bruin que hubiera detectado automáticamente uno de los seis errores.
- Añade a
AGENTS.mdel fallo que te resultó más difícil y comprueba si el agente lo evita la próxima vez.
Comprueba tu comprensión
- ¿Cuántas de las diez consultas son incorrectas?
- ¿Por qué importan tanto las cuatro consultas correctas como las seis incorrectas?
- Nombra tres de las seis clases de fallo.
Hazlo con tu agente
Di next lesson y tu agente te enseñará esto, te hará estas preguntas y después asignará la tarea anterior. Hazla a mano y luego di review my work - comparará tu trabajo con una rúbrica y te dirá qué corregir o marcará la lección como terminada.
Warning
Aviso: contiene las respuestas de todo el laboratorio. Comprométete con un veredicto sobre las diez consultas en findings.md antes de seguir leyendo.
Clave de respuestas
Las seis consultas incorrectas son q02, q04, q05, q07, q08, q09. Las cuatro correctas son q01, q03, q06 y q10. Cada clase de fallo aparece exactamente una vez y todos los valores son exactos, porque los datos se generan igual en todas las máquinas.
| Consulta | Veredicto | Tal como está | Correcto | Por qué |
|---|---|---|---|---|
| q01 | correcta | 1,200 | 1,200 | COUNT(*) simple sobre una tabla; nada puede multiplicar filas. |
| q02 | incorrecta | London 261,246.42 | London 102,911.39 | order_total pertenece a la cabecera del pedido; la unión a order_items repite cada pedido por línea. Suma solo desde orders. |
| q03 | correcta | Paris 190 | Paris 190 | La unión a stores solo añade el nombre de la ciudad; el grano no cambia. |
| q04 | incorrecta | 1,069 | 1,093 | != 'cancelled' elimina 24 pedidos con estado NULL. Usa IS DISTINCT FROM. |
| q05 | incorrecta | 381,357.00 | 338,209.56 | unit_price es el precio de catálogo; los ingresos son quantity * net_price. |
| q06 | correcta | 503.39 | 503.39 | AVG(order_total) solo sobre orders; el denominador es correcto. |
| q07 | incorrecta | 478 | 480 | ordered_at es una marca de tiempo; BETWEEN ... AND '2024-12-31' se detiene a medianoche y elimina dos pedidos posteriores de ese día. Usa un rango semiabierto. |
| q08 | incorrecta | 847,979.80 en 8 categorías | 851,617.69 incluido el grupo Unknown | 15 líneas apuntan a un product_id que no está en products; el INNER JOIN las elimina, junto con 3,637.89. |
| q09 | incorrecta | 1,411.16 | 1,310.60 | Diez filas duplicadas en customers repiten esos pedidos en la unión; COUNT(DISTINCT customer_id) sigue siendo correcto, por eso parece seguro. |
| q10 | correcta | 2.4 | 2.4 | Líneas divididas entre pedidos distintos, ambos desde order_items en su propio grano. |
El factor de multiplicación es exactamente 2.4 en toda la tabla, pero oscila aproximadamente entre 2.31 y 2.54 por tienda, porque los pedidos con más líneas no se distribuyen de forma uniforme; por eso una proporción por tienda cercana, pero no exactamente 2.4, es correcta y no un error aritmético.