funciones de agregacion
TRANSCRIPT
SQL FUNDAMENTALS I
Funciones de
Agrupación
Una funcion de agregacion se ejecuta una
vez por cada grupo de filas, y devuelve un
solo valor
Count(*)
Devuelve el conteo de todas las filas del grupo,
incluyendo valores nulos y duplicados.
Count(distinct expresion)
Devuelve el conteo total de la expresion, elimina
los valores duplicados.
Count(ALL expr), count(expr)
Es el valor por defecto, son equivalentes, cuenta
el numero de tuplas en expresion, omite valores
nulos.
Avg(distinct expr)
Calcula el promedio de expr, omite valores
repetidos y nulos
Avg(all expr), avg(expr)
Realizan el calculo del promedio contando
valores nulos y repetidos.
Expresion debe ser de tipo NUMBER
MAX(expr)
Devuelve el valor maximo
MIN(expr)
Devuelve el valor minimo
VARIANCE
Calcula la funcion estadistica de la varianza
STDDEV
Calcula la desviacion estandard
Select count(*) from employees;
Select count(commission_pct) from
employees;
Select count(distinct commission_pct) from
employees;
Select count(hire_date), count(manager_id)
from employees;
Select sum(2) from employees;
Select sum(salary) from employees;
Select sum(distinct salary) from employees;
Select sum(commission_pct) from
employees;
Select avg(2) from employees;
Select avg(salary) from employees;
Select avg(distinct salary) from employees;
Select avg(commission_pct) from employees;
Funciona para tipos number, date y char
Select min(commission_pct),
max(commision_pct) from employees;
Select min(start_date), max(end_date) from
job_history;
Select min(job_id), max(job_id) from
employees;
Las funciones de tupla pueden anidarse casi
de forma infinita.
Las funciones de agrupacion, solo pueden
tener dos niveles de profundidad o
anidamiento.
G1(item_agrupado) = ok
G1(G2(item_agrupado))=ok
G1(G2(G3(item_agrupado))) = ERROR
La agrupacion de datos, es creada por
asociaciones entre las tuplas, con
propiedades que tienen en comun.
SELECT colum1, colum2 …
FROM tabla
WHERE condicion
GROUP BY colum1, colum2 …
ORDER BY colum1, colum2 …
Select max(salary) as salariomayor, count(*)
as conteo from employees;
Select max(salary) as salariomayor, count(*)
as conteo from employees GROUP BY
department_id order by department_id;
Select department_id, sum(commission_pct)
from employees where commission_pct is not
null group by department_id;
Select department_id, job_id, sum(
commission_pct) from employees where
commission_pct is not null group by
department_id, job_id;
Se requiere un reporte de renuncias o
cambios de cada puesto, la consulta debe
mostrar los años en los cuales los empleados
han renunciado, el puesto de renuncia, y la
cantidad de empleados que renunciaron.
La clausula having permite restringir
resultados del nivel de agrupacion.
Select department_id from job_history
where department_id in (50,60,80,110);
Select department_id, count(*) from
job_history where department_id in
(50,60,80,110) group by department_id;
Suponga que quiere mostrar solo los
departamentos que tengan mas de 1
empleado, como lo realizaria
Having solo puede ser especificada si GROUP
BY esta presente, y realiza un filtrado a nivel
de agrupacion.
Select department_id, count(*) from
job_history where department_id in
(50,60,80,110) group by department_id
HAVING count(*) >1;
El departamento de recursos humanos quiere
saber en que día se despide mas empleados,
para ello le solicitan a ud que muestre una
consulta en los que cite el día de la semana,
y la cantidad de empleados despedidos, solo
incluira aquellos dias en los se haya
despedido a mas de 15 empleados.
Todo el mundo desea saber, pero nadie
quiere pagar el precio.
Juvenal