ORDER BY, LIMIT y DISTINCT
Ordenar resultados, limitar la cantidad de filas y eliminar duplicados. Estos tres conceptos son la base de los reportes "Top N" que hacés todos los días como analista: "los 10 clientes con mayor saldo", "ciudades únicas de la cartera".
Concepto teórico
ORDER BY — ordenar resultados
ORDER BY ordena las filas del resultado. Por defecto es ascendente (ASC). Para descendente
usás DESC:
-- Ascendente (por defecto) SELECT * FROM clientes ORDER BY score; -- 590, 645, 680, 720, 810 -- Descendente SELECT * FROM clientes ORDER BY saldo DESC; -- 890000, 320000, 150000... -- Múltiples columnas: primero por ciudad ASC, después por saldo DESC SELECT * FROM clientes ORDER BY ciudad ASC, saldo DESC;
LIMIT y OFFSET — paginación
LIMIT n devuelve como máximo n filas. OFFSET m salta las primeras
m filas. Juntos permiten paginación:
-- Top 5 clientes por saldo SELECT * FROM clientes ORDER BY saldo DESC LIMIT 5; -- Página 2 (filas 6-10): saltear 5, traer 5 SELECT * FROM clientes ORDER BY saldo DESC LIMIT 5 OFFSET 5; -- Top 3 por score SELECT nombre, score FROM clientes ORDER BY score DESC LIMIT 3;
ORDER BY columna DESC LIMIT N es el patrón más
usado en reportes. "Top 10 clientes por saldo", "Top 5 productos más vendidos", "Los 3 meses con más
transacciones". Lo vas a usar constantemente.DISTINCT — valores únicos
DISTINCT elimina filas duplicadas del resultado. Es el equivalente de .unique() o
.drop_duplicates() en pandas:
-- Todas las ciudades (con repetidas) SELECT ciudad FROM clientes; -- Buenos Aires, Córdoba, Buenos Aires, Rosario, Buenos Aires -- Ciudades únicas SELECT DISTINCT ciudad FROM clientes; -- Buenos Aires, Córdoba, Rosario -- Contar ciudades únicas SELECT COUNT(DISTINCT ciudad) AS ciudades_unicas FROM clientes;
DISTINCT se aplica a TODA la fila. Si seleccionás 2 columnas, elimina duplicados del par:
SELECT DISTINCT ciudad, categoria FROM clientes devuelve combinaciones únicas de ciudad+categoría.
Ejemplos explicados paso a paso
Ejemplo 1: ORDER BY básico — ASC y DESC
Hacé clic en ▶ Ejecutar
Ejemplo 2: ORDER BY con múltiples columnas
Hacé clic en ▶ Ejecutar
Ejemplo 3: LIMIT — Top N y paginación
Hacé clic en ▶ Ejecutar
Ejemplo 4: DISTINCT — valores únicos
Hacé clic en ▶ Ejecutar
Ejemplo 5: Combinación — reporte Top N filtrado
Hacé clic en ▶ Ejecutar
Referencia rápida
| Cláusula | Sintaxis | Ejemplo |
|---|---|---|
| Orden ascendente | ORDER BY col ASC |
ORDER BY nombre (ASC es default) |
| Orden descendente | ORDER BY col DESC |
ORDER BY saldo DESC |
| Múltiples columnas | ORDER BY c1, c2 DESC |
ORDER BY ciudad, saldo DESC |
| Limitar filas | LIMIT n |
LIMIT 10 |
| Paginar | LIMIT n OFFSET m |
LIMIT 10 OFFSET 20 |
| Valores únicos | SELECT DISTINCT col |
SELECT DISTINCT ciudad |
| Contar únicos | COUNT(DISTINCT col) |
COUNT(DISTINCT cliente) |
| Orden de cláusulas |
|---|
SELECT → FROM → WHERE → ORDER BY →
LIMIT
|
Ejercicios
Ejercicio 1: ORDER BY ASC
Ordená clientes por nombre alfabéticamente. Debe incluir Fernández primero.
Hacé clic en ▶ Ejecutar
Ejercicio 2: ORDER BY DESC
Ordená por saldo de mayor a menor. Debe incluir 890000 primero.
Hacé clic en ▶ Ejecutar
Ejercicio 3: LIMIT — Top 3
Traé los 3 clientes con mayor score. Debe incluir Pérez.
Hacé clic en ▶ Ejecutar
Ejercicio 4: DISTINCT
Listá las ciudades únicas de la tabla. Debe incluir Rosario.
Hacé clic en ▶ Ejecutar
Ejercicio 5: COUNT(DISTINCT)
Contá cuántas ciudades distintas hay. Debe incluir 3.
Hacé clic en ▶ Ejecutar
Ejercicio 6: ORDER BY múltiples columnas
Ordená por ciudad ASC y dentro de cada ciudad por score DESC. Debe incluir Pérez primero dentro
de BsAs.
Hacé clic en ▶ Ejecutar
Ejercicio 7: Top N con WHERE
Top 3 clientes ACTIVOS por saldo descendente. Debe incluir Pérez.
Hacé clic en ▶ Ejecutar
Ejercicio 8: Paginación con OFFSET
Simulá paginación: traé la "página 2" (registros 4-6) de clientes ordenados por nombre. Debe incluir
Pérez.
Hacé clic en ▶ Ejecutar
Ejercicio 9: DISTINCT con ORDER BY
Listá los tipos únicos de transacción ordenados alfabéticamente. Debe incluir compra.
Hacé clic en ▶ Ejecutar
Ejercicio 10: Reporte Top 5 con categoría y filtros
Top 5 clientes activos por saldo, con columna de categoría (CASE WHEN), ordenados por saldo DESC. Mostrá
también el ranking (1 a 5 usando un truco). Debe incluir Premium.
Hacé clic en ▶ Ejecutar
Resumen y conexión
ORDER BY col ASC|DESCordena resultados. Sin ORDER BY, el orden NO está garantizado.- Múltiples columnas en ORDER BY:
ORDER BY c1 ASC, c2 DESCordena primero por c1, empates por c2. LIMIT ndevuelve máximo n filas.OFFSET msalta las primeras m.- Patrón Top N:
ORDER BY col DESC LIMIT N— el reporte más usado en análisis. DISTINCTelimina duplicados.COUNT(DISTINCT col)cuenta valores únicos.- Orden de cláusulas: SELECT → FROM → WHERE → ORDER BY → LIMIT.
En la siguiente lección (05 · Funciones de agregación) vas a aprender COUNT, SUM, AVG, MIN, MAX y ROUND — las herramientas para resumir datos.