← Volver a lecciones

6. GROUP BY, ORDER BY y TOP

ORDER BY ordena el resultado:

SELECT * FROM pedidos ORDER BY monto DESC;

Para quedarte sólo con las primeras filas, SQL Server usa TOP N justo después del SELECT (no existe LIMIT):

SELECT TOP 3 id, monto FROM pedidos ORDER BY monto DESC;

GROUP BY agrupa filas que comparten un valor y permite calcular funciones de agregación por grupo: COUNT, SUM, AVG, MIN, MAX:

SELECT cliente_id, COUNT(*) AS cantidad
FROM pedidos
GROUP BY cliente_id;

Toda columna que aparezca en el SELECT y no esté dentro de una función de agregación tiene que estar también en el GROUP BY.

Para filtrar los grupos resultantes (no las filas individuales) se usa HAVING en vez de WHERE:

SELECT cliente_id, SUM(monto) AS total
FROM pedidos
GROUP BY cliente_id
HAVING SUM(monto) > 1000000;

Ejercicios de esta lección

leccion6-ej1 — Cantidad de pedidos por cliente
Practicar
leccion6-ej2 — Los 3 pedidos más grandes
Practicar
leccion6-ej3 — Clientes que gastaron más de 1.000.000 en total
Practicar