Está en la página 1de 9

SQL Avanzado

NIVEL AVANZADO DE CREACIÓN DE CONSULTAS EN


UNA BASE DE DATOS RELACIONAL
Introducción
• Durante esta guía comenzaremos a profundizar el lenguaje SQL que
manejamos hasta ahora.
• Veremos ejemplos de implementación de palabras reservadas en
las consultas de selección, como por ejemplo obtener solo una
cantidad concreta de registros, hacer operaciones matemáticas,
agrupar campos, entre otras.
• Todos los términos que se desarrollan a continuación
complementan la guía de SQL Básico.
Palabras reservadas a utilizar en las consultas SELECT
• TOP se utiliza para indicar que del resultado, se quiere los primeros “n” valores
• Ejemplos de implementación:
• SELECT TOP 10 * FROM Clientes ORDER BY Apellido  Todos los campos de los primeros 10
clientes, ordenando los registros por apellido.
• SELECT TOP 5 Matricula FROM Remises ORDER BY CantViajes DESC  Las matrículas de los 5 autos
que más viajes hicieron

• DISTINCT sirve para obtener valores diferentes de un campo.


• Ejemplo de implementación:
• SELECT MateriaFavorita FROM Alumnos  Trae todas las materias favoritas
• SELECT DISTINCT MateriaFavorita FROM Alumnos  Trae todas las materias favoritas sin repetir
Palabras reservadas a utilizar en las consultas SELECT
• MAX y MIN devuelven respectivamente, el registro con valor máximo o mínimo
en el campo requerido
• Ejemplos de implementación:
• SELECT Apellido, MAX(Puntaje) AS PuntajeMax FROM Equipos  El apellido y el puntaje del Equipo
que más puntos tiene
• SELECT MIN(DNI) AS DniMin, Apellido FROM Clientes  El DNI y el apellido del cliente con DNI
menor

• Como vemos en los ejemplos anteriores, usamos la palabra AS para


redefinir el nombre con el cual aparecerá el campo resultado de la
consulta. Podemos utilizar el término para cualquier campo.
Operadores de criterios en la cláusula WHERE
• Además de los mencionados BETWEEN, LIKE y otros operandos más simples
como los comparadores de menor, igual, mayor, aparecen entre otros:
• IN permite especificar múltiples valores dentro de la condición.
• Ejemplo de implementación
• SELECT * FROM Clientes WHERE Pais IN (‘Argentina’, ’Brasil’, ’Chile’)
• También puede funcionar como filtro de resultados de otra consulta
• SELECT * FROM Clientes WHERE NombrePais IN (SELECT NombrePais FROM Paises)

• VALORES NULOS Obtener registros que cumplan con criterio NULL o NOT NULL
• SELECT * FROM Clientes WHERE Telefono IS NULL
• SELECT * FROM Clientes WHERE Observaciones IS NOT NULL
SELECT - Operaciones matemáticas sobre campos
• Se pueden realizar las 4 operaciones matemáticas sobre campos existentes o
nuevos valores, generando nuevos campos (los cuales deberemos nombrar)
• SELECT IdEmpleado, Nombre, Area, ImpComision*CantidadVentas AS
ComisionAPagar FROM Empleados WHERE ComisionAPagar> 100
• SELECT Numero1+Numero2 AS Resultado FROM Valores

• Puedo utilizar el carácter % para obtener el módulo (resto) de divisiones


• SELECT Numero, Numero%2 AS RestoPar FROM Valores
GROUP BY – Consultas de agrupación
• Este tipo de consultas nos permite obtener información agrupada de una o más tablas. Por ejemplo,
saber la cantidad de clientes para un año determinado, ventas promedio para un lapso de tiempo,
etc.
• Para esto se utiliza la cláusula GROUP BY. Va SIEMPRE después de la cláusula WHERE, y se especifican
los campos por los cuales NO se estén realizando operaciones de agrupación. Tampoco se puede
utilizar un alias en la cláusula GROUP BY.
• Veamos un ejemplo…

SELECT Sucursal, SUM ( Subtotal ) AS Total FROM Ventas GROUP BY Sucursal

• Esta consulta al ejecutarla nos devolverá para cada sucursal, un solo registro con el total de sus
ventas hasta el momento.
• ¡Prestar atención que estamos agrupando por el campo que NO tiene el SUM!
GROUP BY – Funciones varias
• COUNT (Campo) cuenta la cantidad de filas que el campo está presente. Si quiero que
cuente la fila entera debo utilizar directamente count(*). También es posible usar
distinct dentro del count.
• SELECT COUNT(*) AS Cant FROM Productos  Cantidad total de productos

• AVG (Campo) devuelve el promedio entre los valores seleccionados


• SELECT AVG (Nota) AS Promedio FROM Alumnos

• SUM (Campo) devuelve la suma de los valores seleccionados


• SELECT SUM (Total) AS GananciaTotal FROM Ventas

• Sobre estas consultas, no está de más decir, se puede aplicar JOINS, WHERE, ORDER.
GROUP BY – La cláusula HAVING
• HAVING es el “Where” compatible con GROUP BY, y sirve para condicionar la
consulta con algún resultado de las funciones de agregado.
SELECT CargoJerarquico AS Cargo, COUNT (*) AS Cantidad FROM Empleados
GROUP BY CargoContacto
WHERE Cargo LIKE ‘A%’
HAVING COUNT(*) >5
ORDER BY CargoJerarquico
• Esta consulta trae los cargos que empiecen con la letra A, y sus respectivas
cantidades, que tengan más de 5 personas en la tabla.
• En una misma consulta puede haber tanto WHERE como HAVING.

También podría gustarte