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

Funciones de Agregacion

  • 1.
  • 2.
     Una funcionde agregacion se ejecuta una vez por cada grupo de filas, y devuelve un solo valor
  • 3.
     Count(*)  Devuelveel 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.
  • 4.
     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
  • 5.
     MAX(expr)  Devuelveel valor maximo  MIN(expr)  Devuelve el valor minimo  VARIANCE  Calcula la funcion estadistica de la varianza  STDDEV  Calcula la desviacion estandard
  • 6.
     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;
  • 7.
     Select sum(2)from employees;  Select sum(salary) from employees;  Select sum(distinct salary) from employees;  Select sum(commission_pct) from employees;
  • 8.
     Select avg(2)from employees;  Select avg(salary) from employees;  Select avg(distinct salary) from employees;  Select avg(commission_pct) from employees;
  • 9.
     Funciona paratipos 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;
  • 10.
     Las funcionesde 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
  • 11.
     La agrupacionde 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 …
  • 12.
     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;
  • 13.
     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;
  • 14.
     Se requiereun 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.
  • 15.
     La clausulahaving permite restringir resultados del nivel de agrupacion.  Select department_id from job_history where department_id in (50,60,80,110);
  • 16.
     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
  • 17.
     Having solopuede 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;
  • 18.
     El departamentode 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.
  • 19.
     Todo elmundo desea saber, pero nadie quiere pagar el precio.  Juvenal