PRACTICA DE SQL SERVER
USO DE FUNCIONES SQL, AGRUPANDO Y SUMARIZANDO DATOS
Las funciones de agregado realizan un cálculo sobre un conjunto de valores y devuelven un solo
valor.
Uso de la cláusula GROUP BY
Utilizar la cláusula GROUP BY en columnas o expresiones para organizar filas en grupos y para resumir
dichos grupo.
Uso de la cláusula GROUP BY con la cláusula HAVING
Utilizar la cláusula HAVING en columnas o expresiones para establecer condiciones en los grupos incluidos
en un conjunto de resultados. La cláusula HAVING establece condiciones en la cláusula GROUP BY de una
forma muy similar a como interactúa la cláusula WHERE con la instrucción SELECT
FUNCIONES DE AGREGADO
Función AVG
1. En este ejemplo se calcula el precio promedio de todos los productos de la tabla Products,
tomando el dato almacenado en el campo UnitPrice
select AVG(unitprice) as promedio
from Products
Función SUM
2. En este ejemplo se suman todos los datos almacenados en la columna Quantity de la tabla Order
Details.
select SUM(quantity) as cantidad
from [Order Details]
Funcion COUNT
3. En este ejemplo se presenta el número de empleados de la tabla Employees.
select COUNT(*) as total
from Employees
4. Ahora digite la siguiente consulta:
select EmployeeID,Region
from Employees
5. Este ejemplo presenta el número de empleados de la tabla Employees en donde el dato
almacenado en el campo Region sea diferente a NULL.
select COUNT(all region) as total
from Employees
6. En el siguiente ejemplo se quiere contar a los empleados que tienen asignado una región, la cual
esta no debe repetirse
select COUNT(DISTINCT region) as total
from Employees
Función MAX y MIN
7. En el siguiente ejemplo, se muestra como obtener el precio mayor de un producto almacenado en
el campo UnitPrice de la tabla Products
select MAX(unitprice) as maximo
from products
8. En el siguiente ejemplo, se muestra como obtener el precio menor de un producto almacenado en
el campo UnitPrice de la tabla Products
select MIN(unitprice) as minimo
from products
Uso del GROUP BY
9. En este ejercicio se devuelve información acerca de los pedidos de la tabla Order Details. La consulta
agrupa y presenta cada identificador de producto (ProductID) y calcula la cantidad total de pedido
por cada producto. La cantidad total se calcula con la función de agregado SUM y presenta un valor
para cada producto del conjunto de resultados, y al final se ordena la información con el ORDER BY.
select productid, SUM(quantity)as total
from [Order Details]
group by ProductID
order by productid
10. Este ejemplo agrega una cláusula WHERE a la consulta del ejercicio anterior. Esta consulta restringe
las filas al producto cuyo identificador (ProductID), está dentro del rango 10 y 25 y, después, agrupa
dichas filas y calcula la cantidad total del pedido. Compare este conjunto de resultados con el
ejercicio anterior.
select productid, SUM(quantity)as total
from [Order Details]
where ProductID between 10 and 25
group by ProductID
order by productid
11. Calcular y mostrar la cantidad de clientes que se encuentran por cada país (Country) y región
(Region) los cuales están almacenados en la tabla Customers, los resultados se ordenaran por país
(Country)
select country, Region, COUNT(*)as clientes
from customers
group by Country, Region
order by Country
Uso de la cláusula HAVING
12. En este ejemplo se calcula el total de productos (Quantity) que se han realizado en los pedidos
almacenados en la tabla Order Details y donde esa cantidad tiene que ser mayor o igual a 100
unidades y las filas se ordenan en forma ascendente según la suma de las cantidades.
select productid, SUM(quantity)as total
from [Order Details]
group by ProductID
having SUM(quantity) >= 100
order by SUM(quantity)
TAREA
1. Mostrar cuantos clientes hay por cada Compañía (CompanyName)
2. Se desea conocer cuántos territorios hay por cada región (RegionID), utilice la tabla Territories
3. Se desea conocer cuántos empleados hay por cada Territorio, utilice la tabla EmployeeTerritories
4. Retornar la categoría (categoryid), y el promedio de precios por categoría(tabla products)
5. Mostrar de la tabla Order Details aquellos pedidos en donde las unidades sumen más de 50 y
ordenar los datos en forma descendente según la suma de esas cantidades.
6. Mostrar el número de pedidos atendidos por cada empleado ordenado por el número de pedidos
en forma descendente
7. Mostrar las columnas orderid, y el número de pedidos por empleado. Retornar las filas de los
empleados que tengan más de 100 pedidos atendidos