El resultado de una consulta puede ser ordenado por más de una columna
o expresión a esto se le llama ordenamiento compuesto. Pueden ser especificadas
más de una columnas para el ordenamiento, puede ser literal o posicional. Las columnas
listadas en la clausula ORDER BY se
deberán separar por comas.
Cada columna involucrada en el ordenamiento es listada de izquierda a
derecha en orden, separados por comas en la cláusula ORDER BY, incluyendo los modificadores
DESC|ASC NULLS FIRST NULLS LAST especificado para cada columna. A cada columna
podemos especificar modificadores.
Ejemplos:
--
ESQUEMA HR
--
REGIONS LOCATIONS DEPARTMENTS COUNTRIES JOB_HISTORY EMPLOYEES JOBS
SELECT
job_id, salary FROM employees ORDER BY job_id ASC, salary ASC;
SELECT
job_id, salary FROM employees ORDER BY job_id ASC, salary DESC;
SELECT
job_id, salary FROM employees ORDER BY job_id DESC, salary ASC;
SELECT
job_id, salary FROM employees ORDER BY job_id DESC, salary DESC;
SELECT
job_id, salary FROM employees ORDER BY 1 ASC, 2 ASC;
SELECT
job_id, salary FROM employees ORDER BY 1 ASC, 2 DESC;
SELECT
job_id, salary FROM employees ORDER BY 1 DESC, 2 ASC;
SELECT
job_id, salary FROM employees ORDER BY 1 DESC, 2 DESC;
SELECT
job_id, first_name FROM employees ORDER BY job_id ASC, first_name DESC
-- ESQUEMA HR
-- REGIONS LOCATIONS DEPARTMENTS
COUNTRIES JOB_HISTORY EMPLOYEES JOBS
SELECT region_id, region_name FROM
regions ORDER BY region_id;
SELECT region_id, region_name FROM
regions ORDER BY 1;
SELECT region_id, region_name FROM
regions ORDER BY region_name;
SELECT region_id, region_name FROM
regions ORDER BY 2;
SELECT region_id, region_id || ' - ' ||
region_name AS region FROM regions ORDER BY region_id ASC NULLS LAST;
SELECT region_id, region_id || ' - ' ||
region_name AS region FROM regions ORDER BY region_id ASC NULLS LAST;
SELECT location_id, street_address,
postal_code, city, state_province, country_id FROM locations ORDER BY
location_id ASC;
SELECT location_id, street_address,
postal_code, city, state_province, country_id FROM locations ORDER BY city ASC,
state_province ASC;
SELECT DISTINCT department_name FROM
departments ORDER BY department_name;
SELECT * FROM countries ORDER BY
region_id ASC, country_id ASC;
SELECT * FROM job_history ORDER BY
employee_id, start_date, job_id DESC;
SELECT job_id, job_title FROM jobs ORDER
BY 1;
SELECT job_id || job_title FROM jobs
ORDER BY job_id || job_title;
SELECT job_id || job_title FROM jobs
ORDER BY 1;
SELECT job_id || job_title TEXTO FROM
jobs ORDER BY TEXTO;
Conclusión la clausula ORDER BY nos permite ordenar el resultado de
una consulta, la clausula ORDER BY no afecta la consulta solo el resultado de
esta. Esta es especificada mediante la clausula ORDER BY que va al final de la
clausula SELECT. En la clausula ORDER BY
podemos especificar más de una columna, expresión o posición. Las columnas las
podemos ordenar en forma ascendente o descendente mediante los modificadores
ASC y DESC que van luego de la columna a ordenar, así como también podemos
decirle a Oracle donde queremos que aparezcan los valores nulos si la columna a
ordenar contiene. Hay un comportamiento por defecto de las columnas al
especificarlas en la clausula ORDER BY. Si especificamos una columna sin
modificadores ASC o DESC, la columna se ordena por defecto como ASC ascendente.
Y si no especificamos NULLS LAST o NULLS FIRST, el comportamiento es el
siguiente, si ordenamos una columna en forma ascendente y no especificamos
donde colocar los nulos el valor por defecto es NULLS LAST, si ordenamos una
columna en forma descendente y no especificamos donde van a quedar los nulos el
valor por defecto es NULLS FIRST. Así como también podemos ordenar por posición,
esta forma asigna una posición a cada columna listada en la clausula SELECT iniciando
desde la posición 1, entonces en la clausula ORDER BY escribimos la posición de
la columna.
Comentarios
Publicar un comentario