Objetivo
Traducir preguntas simples de negocio a consultas correctas.
Explicación
SELECT elige columnas; WHERE filtra filas antes de agregarlas; ORDER BY ordena el resultado. Evita SELECT * en consultas que forman contratos de datos: seleccionar columnas explícitas documenta qué consumes. En un equipo de datos, SQL no se evalúa sólo por devolver filas: debe responder una pregunta de negocio, conservar el grain correcto y permitir que otra persona valide el resultado. Esta práctica usa el ecommerce del curso para obligarte a reconciliar conteos y totales, igual que harías antes de publicar una métrica en un dashboard. Para trabajar SELECT, WHERE y ORDER BY de forma profesional, no te quedes con el ejemplo: identifica la entrada, ejecuta el caso base, provoca al menos un caso incorrecto y compara el resultado con un control independiente. En este laboratorio el criterio de salida es concreto: Una tabla ordenada de mayor a menor sin pedidos cancelados. La verificación principal será: COUNT(*) del resultado debe coincidir con el recuento manual tras aplicar filtros. Si no puedes explicar por qué pasa esa comprobación, vuelve al paso anterior antes de continuar.
Contexto profesional
En un equipo de datos, SQL no se evalúa sólo por devolver filas: debe responder una pregunta de negocio, conservar el grain correcto y permitir que otra persona valide el resultado. Esta práctica usa el ecommerce del curso para obligarte a reconciliar conteos y totales, igual que harías antes de publicar una métrica en un dashboard.
Ejemplo real
SELECT order_id, customer_id, order_date, amount
FROM orders
WHERE status = 'COMPLETED' AND amount >= 100
ORDER BY amount DESC;
Archivos o datos de entrada
- data/ecommerce_customers.csv
- data/ecommerce_orders.csv
Práctica guiada
Ejecuta la consulta y anota cuántos pedidos devuelve.
Laboratorio paso a paso
- Prepara el entorno y localiza los datos/archivos de entrada: data/ecommerce_customers.csv, data/ecommerce_orders.csv. Antes de modificar nada, anota el número de filas, columnas u objetos que esperas usar.
- Reproduce el ejemplo real de la lección y guarda la salida. No avances hasta poder explicar qué hace cada bloque relacionado con «SELECT, WHERE y ORDER BY».
- Ejecuta la práctica guiada: Ejecuta la consulta y anota cuántos pedidos devuelve. Documenta el comando, consulta o acción exacta y el resultado obtenido.
- Resuelve el reto sin mirar la solución: Devuelve sólo pedidos completados de España superiores a 100 uniendo customers. Si falla, registra el mensaje de error y formula una hipótesis antes de cambiar código.
- Compara tu resultado con el criterio esperado: Una tabla ordenada de mayor a menor sin pedidos cancelados. Después ejecuta la comprobación: COUNT(*) del resultado debe coincidir con el recuento manual tras aplicar filtros.
- Provoca deliberadamente un caso problemático relacionado con este error frecuente: Aplicar ORDER BY antes de pensar el filtro no cambia filas; sólo presentación.. Comprueba que sabes detectarlo y corregirlo.
Reto sin ayuda
Devuelve sólo pedidos completados de España superiores a 100 uniendo customers.
Resultado esperado
Una tabla ordenada de mayor a menor sin pedidos cancelados.
Cómo verificarlo
COUNT(*) del resultado debe coincidir con el recuento manual tras aplicar filtros.
Checklist de validación
- El resultado cumple: Una tabla ordenada de mayor a menor sin pedidos cancelados.
- Has ejecutado esta verificación y puedes explicar el resultado: COUNT(*) del resultado debe coincidir con el recuento manual tras aplicar filtros.
- Has probado al menos un caso límite o dato inválido y el comportamiento es explícito, no silencioso.
- Puedes repetir la práctica desde cero sin copiar la solución y dejar evidencia (consulta, commit, captura o salida de consola).
Pista específica
Primero filtra orders; luego añade el JOIN a customers.
Solución paso a paso
1) Empieza reproduciendo el caso base con los datos indicados. 2) Aplica esta estrategia específica: JOIN customers c ON o.customer_id=c.customer_id y añade c.country=’ES’. 3) Usa como referencia técnica el ejemplo de la lección (SELECT order_id, customer_id, order_date, amount FROM orders WHERE status = ‘COMPLETED’ AND amount >= 100 ORDER BY amount DESC;). 4) Ejecuta la verificación: COUNT(*) del resultado debe coincidir con el recuento manual tras aplicar filtros. 5) Compara con el resultado esperado: Una tabla ordenada de mayor a menor sin pedidos cancelados. 6) Repite el reto cambiando un dato o condición para demostrar que entiendes el comportamiento y no has obtenido el resultado por casualidad. Si aparece el error «Aplicar ORDER BY antes de pensar el filtro no cambia filas; sólo presentación.», corrige la causa antes de continuar; no ocultes el fallo ni cambies el resultado esperado para que la prueba pase.
Errores frecuentes
- Aplicar ORDER BY antes de pensar el filtro no cambia filas; sólo presentación.
- Comparar números almacenados como texto puede producir orden incorrecto.
Qué debes recordar
Debes poder explicar qué filas produce la consulta y por qué.
Preguntas de entrevista
- ¿Cómo demostrarías que una consulta no está duplicando métricas? Aplícalo concretamente a «SELECT, WHERE y ORDER BY».
- ¿Qué comprobaciones harías antes de publicar este resultado a negocio? Explica qué evidencia enseñarías al revisor.
Siguiente paso
Después agruparás pedidos para obtener métricas.
Recursos de esta lección
Preparando contenido…
Quiz de la lección
¿Qué cláusula elimina filas antes de GROUP BY?