Saltar al contenido

El orden de una consulta

SQL · Unidad 6: Agrupar

De vuelta en la tienda. El dueño quiere premiar a un cliente. De lo vendido hasta hoy, 15 de enero, y entre quienes han pedido dos veces o más, ¿quién se ha llevado más unidades?

La pregunta tiene varias partes, y cada una es una cláusula que ya conoces. Juntas van siempre en este orden, que es SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY y LIMIT. No hace falta usarlas todas. Las que uses van así.

SELECT cliente_id,
  SUM(cantidad) AS unidades
FROM pedidos
WHERE fecha <= '2026-01-15'
GROUP BY cliente_id
HAVING COUNT(*) >= 2
ORDER BY unidades DESC
LIMIT 1;

Devuelve

cliente_idunidades
27

El resto de la explicación está en la lección, que es del plan completo.

Ejercicios de esta lección

Se hacen en la app, que los corrige al momento y explica por qué.

  1. 1. Ordena las líneas

    Hoy, 15 de enero, todavía no termina, así que no cuenta. De los días anteriores, y entre los que tuvieron dos pedidos, ¿cuál fue el más flojo en unidades? Ordena la consulta.

  2. 2. Predice la salida

    La consulta que abrió la lección contestó el cliente 2, con 7 unidades hasta hoy. A esta le quitaron el HAVING. El cliente 4 ha hecho un solo pedido, de 10 unidades, el 9 de enero. ¿Qué devuelve?

  3. 3. Predice la salida

    Los pedidos 1 y 2, los dos primeros de la tabla, son del cliente 1, que lleva tres en total. El cliente 2 también lleva tres. ¿Qué devuelve esta consulta?

  4. 4. Completa el código

    ¿En qué secciones hay algo disponible por menos de 100, y desde qué precio? Los agotados no cuentan. Completa cada filtro con su palabra.

  5. 5. Encuentra el bug

    ¿Cuántas unidades de cada producto se han pedido hasta hoy, 15 de enero? Aquí la base contesta near "GROUP": syntax error. ¿Qué línea tiene el problema?

  6. 6. Opción múltiple

    En PostgreSQL, HAVING unidades > 5 es un error aunque el SELECT diga SUM(cantidad) AS unidades. Aquí pasa. Con el orden en que se resuelve una consulta, ¿por qué falla allá, y qué se escribe para que corra en los dos?

  7. 7. Opción múltiple

    En esta unidad viste que, junto a GROUP BY categoria, el SELECT no puede pedir nombre a secas. Con el orden en que se resuelve una consulta, ¿por qué?

  8. 8. Ordena las líneas

    Los pedidos de 2 a 5 unidades tienen descuento por cantidad. ¿Qué clientes lo han recibido más de una vez? Ordena la consulta. Sobra una línea.

  9. 9. Escribe el código

    La tienda va a abrir su primer punto de entrega en la ciudad donde tiene más clientes. El grupo de quienes no tienen ciudad anotada no cuenta, tenga los clientes que tenga. Escribe una consulta que devuelva una sola fila con dos columnas en este orden: la ciudad y cuántos clientes tiene.

Hacer esta lección

Se abre en el navegador. Esta lección es del plan completo; la primera unidad de cada curso es gratis.

Ver todas las lecciones →