Ordenación de las filas - ORDER BY -

Para ordenar las filas del resultado de la consulta, tenemos la cláusula ORDER BY.
Con esta cláusula se altera el orden de visualización de las filas de la tabla pero en ningún caso se modifica el orden de las filas dentro de la tabla. La tabla no se modifica.
Podemos indicar la columna por la que queremos ordenar utilizando su nombre de columna (nbcolumna) o utilizando su número de orden que ocupa en la lista de selección (Nºcolumna).
Ejemplo:
SELECT nombre, oficina, contrato
FROM empleados
ORDER BY oficina
es equivalente a
SELECT nombre, oficina, contrato
FROM empleados
ORDER BY 2
Por defecto el orden será ascendente (ASC) (de menor a mayor si el campo es numérico, por orden alfabético si el campo es de tipo texto, de anterior a posterior si el campo es de tipo fecha/hora, etc...
Ejemplos:
SELECT nombre, numemp, oficinarep
FROM empleados
ORDER BY nombre
Con esta instrucción obtiene un listado alfabético de los empleados.
SELECT nombre, numemp, contrato
FROM empleados
ORDER BY contrato
Con esta otra se obtiene un listado de los empleados por orden de antiguedad en la empresa (los de más antiguedad aparecen primero).
SELECT nombre, numemp,ventas
FROM empleados
ORDER BY ventas
Con esta se obtiene un listado de los empleados ordenados por volúmen de ventas sacándo los de menores ventas primero.
Si queremos podemos alterar ese orden utilizando la cláusula DESC (DESCendente), en este caso el orden será el inverso al ASC.
Ejemplos:
SELECT nombre, numemp, contrato
FROM empleados
ORDER BY contrato DESC
Aqui entonces se obtiene un listado de los empleados por orden de antiguedad en la empresa empezando por los más recientemente incorporados.
SELECT nombre, numemp,ventas
FROM empleados
ORDER BY ventas DESC
Y en con este se obtiene un listado de los empleados ordenados por volúmen de ventas sacando primero los de mayores ventas.
También podemos ordenar por varias columnas, en este caso se indican las columnas separadas por comas.
Se ordenan las filas por la primera columna de ordenación, para un mismo valor de la primera columna, se ordenan por la segunda columna, y así sucesivamente.
La cláusula DESC o ASC se puede indicar para cada columna y así utilizar una ordenación distinta para cada columna. Por ejemplo ascendente por la primera columna y dentro de la primera columna, descendente por la segunda columna.
Ejemplos:
SELECT region, ciudad, ventas
FROM oficinas
ORDER BY region, ciudad
Muestra las ventas de cada oficina , ordenadas por orden alfabético de región y dentro de cada región por ciudad.
SELECT region, ciudad, (ventas - objetivo) AS superavit FROM oficinas
ORDER BY region, 3 DESC
Lista las oficinas clasificadas por región y dentro de cada región por superavit de modo que las de mayor superavit aparezcan las primeras.
16 y 17
Selección de filas
A continuación veremos las cláusulas que nos permiten indicar qué filas queremos visualizar.

Las cláusulas DISTINCT / ALL
Al incluir la cláusula DISTINCT en la SELECT, se eliminan del resultado las repeticiones de filas. Si por el contrario queremos que aparezcan todas las filas incluidas las duplicadas, podemos incluir la cláusula ALL o nada, ya que ALL es el valor que SQL asume por defecto.
Por ejemplo queremos saber los códigos de los directores de oficina.
SELECT dir FROM oficinas
SELECT ALL dir FROM oficinas
Lista los códigos de los directores de las oficinas. El director 108 aparece en cuatro oficinas, por lo tanto aparecerá cuatro veces en el resultado de la consulta.
SELECT DISTINCT dir FROM oficinas
En este caso el valor 108 aparecerá una sola vez ya que le decimos que liste los distintos valores de directores.
18 y 19
La cláusula TOP
La cláusula TOP permite sacar las n primeras filas de la tabla origen. No elige entre valores iguales, si pido los 25 primeros valores pero el que hace 26 es el mismo valor que el 25, entonces devolverá 26 registros en vez de 25 (o los que sea). Siempre se guia por la columna de ordenación, la que aparece en la cláusula ORDER BY o en su defecto la clave principal de la tabla.
Por ejemplo queremos saber los dos empleados más antiguos de la empresa.
SELECT TOP 2 numemp, nombre
FROM empleado
ORDER BY contrato
Lista el código y nombre de los empleados ordenándolos por fecha de contrato, sacando unicamente los dos primeros (serán los dos más antiguos).
SELECT TOP 3 numemp, nombre
FROM empleado
ORDER BY contrato
En este caso tiene que sacar los tres primeros, pero si nos fijamos en las fechas de contrato tenemos 20/10/86, 10/12/86, 01/03/87, 01/03/87, la tercera fecha es igual que la cuarta, en este caso sacará estas cuatro filas en vez de tres, y sacaría todas las filas que tuviesen el mismo valor que la tercera fecha de contrato.
El número de filas que queremos visualizar se puede expresar con un número entero o como un porcentaje sobre el número total de filas que se recuperarían sin la cláusula TOP. En este último caso utilizaremos la cláusula TOP n PERCENT (porcentaje en inglés).
SELECT TOP 20 PERCENT nombre
FROM empleado
ORDER BY contrato
Lista el nombre de los empleados ordenándolos por fecha de contrato, sacando unicamente un 20% del total de empleados. Como tenemos 10 empleados, sacará los dos primeros, si tuviesemos 100 empleados sacaría los 20 primeros.
20
La cláusula WHERE

La cláusula WHERE selecciona únicamente las filas que cumplan la condición de selección especificada.
En la consulta sólo aparecerán las filas para las cuales la condición es verdadera (TRUE), los valores nulos (NULL) no se incluyen por lo tanto en las filas del resultado. La condición de selección puede ser cualquier condición válida o combinación de condiciones utilizando los operadores NOT (no) AND (y) y OR (ó). En ACCESS2000 una cláusula WHERE puede contener hasta 40 expresiones vinculadas por operadores lógicos AND y OR. Si quieres ver cómo funcionan los operadores lógicos
Para empezar veamos un ejemplo sencillo:
SELECT nombre
FROM empleados
WHERE oficina = 12
Lista el nombre de los empleados de la oficina 12.
SELECT nombre
FROM empleados
WHERE oficina = 12 AND edad > 30
Lista el nombre de los empleados de la oficina 12 que tengan más de 30 años. (oficina igual a 12 y edad mayor que 30)
TODAS LA INFORMACIONES FUERON TOMADAS DE CURSOS ONLINE DE SQL