Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCIÓN
DESARROLLO
Al igual que las filas de una tabla en la BD, las filas de los resultados de una
consulta no están dispuestos en ningún orden particular. Se puede pedir a SQL que
ordene los resultados de una consulta incluyendo la cláusula ORDER BY en la
sentencia SELECT.
La cláusula ORDER BY posee la siguiente sintaxis:
DESC
,
Observar que en el ordenamiento solamente se pueden especificar las columnas de
la cláusula SELECT.
Mostrar las ventas de cada oficina, ordenadas en orden alfabético por ciudad.
Mostrar las ventas de cada oficina, ordenadas en orden alfabético por región y
dentro de cada región por ciudad.
Por omisión, SQL ordena los datos en secuencia ascendente. Para solicitar en
secuencia descendente, se incluye la palabra clave DESC en la especificación de
ordenación, como en el siguiente ejemplo:
Listar las oficinas, clasificadas en orden descendente de ventas, de modo que las
oficinas con mayores ventas aparezcan en primer lugar.
Se puede utilizar la palabra clave ASC para especificar el orden ascendente, pero
puesto que este es el orden por omisión, la palabra clave se suele omitir.
Ejemplo:
Observar que los resultados estarán ordenados por la tercera columna, que es una
columna calculada.
Ejemplo:
Listar todos los productos en donde el precio del producto exceda de 2000 ó donde
más de 30000 del producto hayan sido incluidos en un solo pedido.
Listar los productos para los cuales más de 30000 del producto hayan sido
incluidos en un solo pedido.
Como queremos los productos que satisfacen estos dos requerimientos, debemos
tomar los resultados de las dos consultas:
Hay varias restricciones sobre las tablas que pueden combinarse con una operación
UNION:
a) Ambas tablas deben contener el mismo número de columnas.
b) El tipo de datos de cada columna en la primera tabla debe ser el mismo que el
tipo de datos de la columna correspondiente en la segunda tabla.
c) Ninguna de las dos tablas puede estar ordenada con la cláusula ORDER BY. Sin
embargo, los resultados combinados pueden ser ordenados, según se describe
después.
Ya que la operación UNION combina filas de dos conjuntos de resultados, pudiera
suceder que los resultados tuvieran filas iguales. (Un caso es el ejemplo anterior, ver
los resultados). Por omisión, la operación UNION elimina las filas duplicadas como
parte de su procesamiento. Si se desea obtener las filas duplicadas en una operación
UNION, se puede especificar la palabra clave ALL inmediatamente de la palabra
UNION.
Listar todos los productos en donde el precio del producto exceda de 2000 ó donde
más de 30000 del producto hayan sido incluidos en un solo pedido, clasificados por
fabricante y el identificador del producto..
La operación UNION puede ser utilizada repetidamente para combinar tres o más
conjuntos de resultados, tal como se muestra en la figura siguiente:
Tabla A
Bill Resultados
Tabla B
Mary Bill
Bill
George Mary
Sue
Fred George
Julia UNION
Fred
Harry
Bill Sue
Tabla C UNION Sue Julia
Mary Julia Harry
George Harry
Bill Mary
Harry George
La consulta se escribiría de la siguiente forma:
SELECT *
FROM a
UNION ( SELECT *
FROM b
UNION
SELECT *
FROM c )
Los paréntesis indican el orden en que deben ser realizadas las uniones. En este caso
como todas las uniones eliminan duplicados no importa el orden. Hay que tener
mucho cuidado con el orden cuando una de las operaciones UNION tiene el ALL.
Funciones de Columna
AVG ( expresión )
DISTINCT nombre columna
MIN ( expresión )
MAX ( expresión )
SELECT AVG(100*(ventas/cuota))
FROM vendedores
Para procesar esta consulta SQL construye una columna temporal que contiene el
valor de la expresión por cada fila de la tabla, luego calcula el promedio de la
columna temporal.
Ejemplos:
¿Cuáles son las cuotas y ventas totales para todos los vendedores?
SELECT AVG(precio)
FROM productos
WHERE id_fab=´ACI´
¿Cuáles son las cuotas mínima y máxima asignadas a los vendedores?
SELECT COUNT(nombre)
FROM vendedores
WHERE ventas>cuotas
SELECT COUNT(*)
FROM vendedores
WHERE ventas>cuotas
La siguiente consulta:
arrojará los valores 10, 10 y 9, porque hay un vendedor con cuota nula.
Ignorar los nulos tiene poca importancia en las funciones MAX y MIN, pero puede
producir algunas sutilezas en las funciones SUM y AVG. Por ejemplo la consulta:
Parece que debe dar dos valores similares, sin embargo en nuestro ejemplo produce
resultados diferentes pues hay un vendedor que tiene un valor nulo en su cuota, por
lo tanto es ignorado en SUM(cuota) y en SUM(ventas-cuota), no así el valor
correspondiente de sus ventas que no es nulo.
Al igual que se eliminaban las filas duplicadas en una consulta se pueden eliminar
los valores duplicados de una columna antes de aplicarle una función de columna.
Para ello se utiliza la palabra clave DISTINCT en el argumento de la función como
se indica en el diagrama sintáctico.
¿Cuántos títulos diferentes tienen los vendedores?
CONCLUSIONES
Bibliografía
Ejercicios: