30 - Funciones de grupo (count - max - min - sum - avg) |
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óndrop 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';