Sunteți pe pagina 1din 16

Módulo 5

Ordenar y Filtrar Datos

Paco Márquez Urbina


pmarquez@sistemasunica.edu.pe
Descripción general del módulo

• Clasificación de datos
• Filtrar datos con predicados
• Filtrar datos con TOP y OFFSET-FETCH
• Trabajando con Valores Desconocidos
Lección 1: Clasificación de datos

• Uso de la cláusula ORDER BY


• Sintaxis de cláusula ORDER BY
• Ejemplos de cláusula ORDER BY
Uso de la cláusula ORDER BY

• ORDER BY ordena las filas en los resultados con


fines de presentación
• Sin orden garantizado de filas sin ORDER BY
• El uso de ORDER BY garantiza el orden de
clasificación del resultado
• Última cláusula para ser procesada lógicamente
• Ordena todos los NULL juntos

• ORDER BY puede referirse a:


• Columnas por nombre, alias o posición ordinal (no
recomendado)
• Columnas que no forman parte de la lista SELECT
• A menos que se especifique DISTINCT
• Declarar orden de clasificación con ASC o DESC
Sintaxis de cláusula ORDER BY

• Escribiendo ORDER BY usando nombres de


columna:
SELECT <select list>
FROM <table source>
ORDER BY <column1_name>, <column2_name>;

• Escribiendo ORDEN usando alias de columna:


SELECT <column> AS <alias>
FROM <table source>
ORDER BY <alias>;

• Especificando el orden de clasificación en la


cláusula ORDER BY:
SELECT <column> AS <alias>
FROM <table source>
ORDER BY <column_name|alias> ASC|DESC;
Ejemplos de cláusula ORDER BY

• ORDER BY con nombres de columna:


SELECT orderid, custid, orderdate
FROM Sales.Orders
ORDER BY orderdate;

• ORDER BY con alias de columna:


SELECT orderid, custid, YEAR(orderdate) AS
orderyear
FROM Sales.Orders
ORDER BY orderyear;

• ORDER BY con orden descendente:


SELECT orderid, custid, orderdate
FROM Sales.Orders
ORDER BY orderdate DESC;
Lección 2: Filtrar datos con predicados

• Filtrar datos en la cláusula WHERE con predicados


• Sintaxis de la clausula WHERE
Filtrar datos en la cláusula WHERE con predicados

• WHERE cláusulas usan predicados


• Debe expresarse como condiciones lógicas
• Solo se aceptan las filas para las que el predicado se evalúa
como VERDADERO
• Valores de FALSO o DESCONOCIDO filtrados
• La cláusula WHERE sigue a FROM, precede a otras
cláusulas
• No se pueden ver los alias declarados en la cláusula SELECT
• Puede ser optimizado por SQL Server para usar índices
• Datos filtrados del lado del servidor
• Puede reducir el tráfico de red y el uso de la memoria del
cliente
Sintaxis de la clausula WHERE

• Filter rows for customers from Spain


SELECT contactname, country
FROM Sales.Customers
WHERE country = N'Spain';

• Filter rows for orders after July 1, 2007


SELECT orderid, orderdate
FROM Sales.Orders
WHERE orderdate > '20070101';

• Filter orders within a range of dates


SELECT orderid, custid, orderdate
FROM Sales.Orders
WHERE orderdate >= '20070101' AND orderdate < '20080101';
Lección 3: Filtrar datos con TOP y OFFSET-FETCH

• Filtrar en la cláusula SELECT usando la opción TOP


• Filtrar en la cláusula ORDER BY Usar OFFSET-
FETCH
• Sintaxis OFFSET-FETCH
Filtrar en la cláusula SELECT usando la opción TOP

• TOP le permite limitar el número o porcentaje de filas


devueltas por una consulta
• Funciona con la cláusula ORDER BY para limitar filas
por orden de clasificación
• Si la lista ORDER BY no es única, los resultados no son
deterministas (no hay un solo conjunto de resultados correcto)
• Modifique la lista ORDER BY para asegurar la exclusividad, o
use TOP WITH TIES
• Agregado a la cláusula SELECT:
• SELECCIONAR TOP (N) | TOP (N) Porcentaje
• Con el porcentaje, el número de filas redondeadas
• SELECCIONAR TOP (N) CON LAZOS
• Recuperar duplicados cuando corresponda (no determinista)

• TOP es propiedad de Microsoft SQL Server


Filtrar en la cláusula ORDER BY Usar OFFSET-FETCH

OFFSET-FETCH es una extensión de la cláusula


ORDER BY:
• Permite filtrar un rango solicitado de filas
• Depende de la cláusula ORDER BY
• Proporciona un mecanismo para paginación a través
de resultados
• Especifique el número de filas para omitir, el número
de filas para recuperar:
ORDER BY <order_by_list>
OFFSET <offset_value> ROW(S)
FETCH FIRST|NEXT <fetch_value> ROW(S) ONLY
• Nueva opción en SQL Server 2012
• Basado en el borrador del estándar SQL: 2011
• Proporciona más compatibilidad que TOP
Sintaxis OFFSET-FETCH

• El valor OFFSET debe ser suministrado


• Puede ser cero si no se requiere saltar
• La cláusula FETCH opcional permite devolver todas las
filas que siguen al valor OFFSET
• Enfoque del lenguaje natural al código:
• FILA y FILAS intercambiables
• PRIMERO y SIGUIENTE intercambiables
• El valor OFFSET y el valor FETCH pueden ser
constantes o expresiones, incluidas variables y
parámetros
OFFSET <offset_value> ROW|ROWS
FETCH FIRST|NEXT <fetch_value> ROW|ROWS [ONLY]
Lección 4: Trabajar con valores desconocidos

• Lógica de tres valores


• Manejo de NULL en Consultas
Lógica de tres valores

• SQL Server usa NULL para marcar valores perdidos


• NULL puede ser "faltante pero aplicable" o "perdido pero
inaplicable"
• Segundo nombre del cliente: ¿No se proporciona o no tiene uno?

• Sin valores faltantes, las salidas de predicados son


VERDADERAS o FALSAS solamente (5> 2, 1 = 1)
• Con valores perdidos, los resultados pueden ser
VERDADERO, FALSO o DESCONOCIDO (NULO> 99,
NULO = NULO)
• Los predicados devuelven UNKNOWN cuando se
compara el valor perdido con otro valor, incluido otro
valor perdido
Manejo de NULL en Consultas

• Diferentes componentes de SQL Server manejan NULL


de manera diferente
• Los filtros de consulta (ON, WHERE, HAVING) filtran
UNKNOWNs
• Las restricciones de CHECK aceptan NECESIDADES
• ORDER BY, DISTINCT trata NULLs como iguales
• Prueba de NULL
• Use IS NULL o IS NOT NULL en lugar de = NULL o <> NULL

SELECT custid, city, region, country


FROM Sales.Customers
WHERE region IS NOT NULL;

S-ar putea să vă placă și