30 - Funciones de grupo (count - max - min - sum - avg)


Primer problema:

Una empresa almacena los datos de sus empleados en una tabla "empleados".

1- Elimine la tabla y créela con la siguiente estructura:

 drop table empleados;

 create table empleados(
  nombre varchar2(30),
  documento char(8),
  domicilio varchar2(30),
  seccion varchar2(20),
  sueldo number(6,2),
  cantidadhijos number(2),
  fechaingreso date,
  primary key(documento)
 );

3- Ingrese algunos registros:

 insert into empleados
  values('Juan Perez','22333444','Colon 123','Gerencia',5000,2,'10/10/1980');
 insert into empleados
  values('Ana Acosta','23444555','Caseros 987','Secretaria',2000,0,'15/08/1998');
 insert into empleados
  values('Lucas Duarte','25666777','Sucre 235','Sistemas',4000,1,null);
 insert into empleados
  values('Pamela Gonzalez','26777888','Sarmiento 873','Secretaria',2200,3,null);
 insert into empleados
  values('Marcos Juarez','30000111','Rivadavia 801','Contaduria',3000,0,'26/08/2000');
 insert into empleados
  values('Yolanda Perez','35111222','Colon 180','Administracion',3200,1,'25/09/2001');
 insert into empleados
  values('Rodolfo Perez','35555888','Coronel Olmedo 588','Sistemas',4000,3,null);
 insert into empleados
  values('Martina Rodriguez','30141414','Sarmiento 1234','Administracion',3800,4,'14/12/2000');
 insert into empleados
  values('Andres Costa','28444555',default,'Secretaria',null,null,'08/08/1990');

4- Muestre la cantidad de empleados usando "count" (9 empleados)

5- Muestre la cantidad de empleados con fecha de ingreso conocida (6 empleados)

6- Muestre la cantidad de empleados con sueldo (8 empleados)

7- Muestre la cantidad de empleados con sueldo de la sección "Secretaria" (2 empleados)

8- Muestre el sueldo más alto y el más bajo colocando un alias (5000 y 2000 respectivamente)

9- Muestre el valor mayor de "cantidadhijos" de los empleados "Perez" (3 hijos)

10- Muestre la fecha de ingreso más reciente (max) y la más lejana (min) (25/09/01 y 10/10/80 respectivamente)

11- Muestre el documento menor (22333444)

12- Muestre el promedio de sueldos de todo los empleados (3400. Note que hay un sueldo nulo y no es tenido en cuenta)

13- Muestre el promedio de sueldos de los empleados de la sección "Secretaría" (2100. Note que hay 3 registros de la sección solicitada, pero como uno de ellos tiene sueldo nulo, no es tenido en cuenta)

14- Muestre el promedio de hijos de todos los empleados de "Sistemas" (retorna 2)

15- Muestre la cantidad de empleados, la cantidad de empleados con domicilio conocido, la suma de los hijos, el promedio de los sueldos y los valores mínimo y máximo del campo "fechaingreso" de todos los empleados. Empleamos todas las funciones de grupo en una sola consulta y nos retorna 9, 8, 14, 3400, 10/10/80 y 25/09/01.

16- Realice la misma consulta anterior pero ahora de los empleados de la sección "Recursos". Al no existir tal sección, "count(*)" y "count(domicilio)" retornan 0 (cero) y las demás funciones de grupo retornan "null".

Ver solución

 drop table empleados;

 create table empleados(
  nombre varchar2(30),
  documento char(8),
  domicilio varchar2(30),
  seccion varchar2(20),
  sueldo number(6,2),
  cantidadhijos number(2),
  fechaingreso date,
  primary key(documento)
 );

 insert into empleados
  values('Juan Perez','22333444','Colon 123','Gerencia',5000,2,'10/10/1980');
 insert into empleados
  values('Ana Acosta','23444555','Caseros 987','Secretaria',2000,0,'15/08/1998');
 insert into empleados
  values('Lucas Duarte','25666777','Sucre 235','Sistemas',4000,1,null);
 insert into empleados
  values('Pamela Gonzalez','26777888','Sarmiento 873','Secretaria',2200,3,null);
 insert into empleados
  values('Marcos Juarez','30000111','Rivadavia 801','Contaduria',3000,0,'26/08/2000');
 insert into empleados
  values('Yolanda Perez','35111222','Colon 180','Administracion',3200,1,'25/09/2001');
 insert into empleados
  values('Rodolfo Perez','35555888','Coronel Olmedo 588','Sistemas',4000,3,null);
 insert into empleados
  values('Martina Rodriguez','30141414','Sarmiento 1234','Administracion',3800,4,'14/12/2000');
 insert into empleados
  values('Andres Costa','28444555',default,'Secretaria',null,null,'08/08/1990');

 select count(*)
  from empleados;

 select count(fechaingreso)
  from empleados;

 select count(sueldo)
  from empleados;

 select count(sueldo)
  from empleados
  where seccion='Secretaria';

 select max(sueldo) as "Mayor sueldo",
  min(sueldo) as "Menor sueldo"
  from empleados;

 select max(cantidadhijos)
  from empleados
  where nombre like '%Perez%';

 select max(fechaingreso),min(fechaingreso)
  from empleados;

 select min(documento) from empleados;

 select avg(sueldo)
  from empleados;

 select avg(sueldo)
  from empleados
  where seccion='Secretaria';

 select avg(cantidadhijos)
  from empleados
  where seccion='Sistemas';

 select count(*),count(domicilio),sum(cantidadhijos),avg(sueldo),min(fechaingreso),max(fechaingreso)
  from empleados;

 select count(*),count(domicilio),sum(cantidadhijos),avg(sueldo),min(fechaingreso),max(fechaingreso)
  from empleados where seccion='Recursos';

 


Retornar