Práctica 5-1: Informes de Datos Agregados con Funciones de Grupo
El departamento de recursos humanos necesita los siguientes informes:4) Encontrar el valor más alto, el valor más bajo, la suma y la media del salario de todos los empleados. Etiquete las columnas como Maximum , Minimum , Sum y Average , respectivamente. Redondee los resultados al número entero más cercano. Guarde la sentencia SQL como lab_05_04.sql . Ejecute la consulta.
select round(max(salary)) as Maximum, round(min(salary)) as Minimum, round(sum(salary)) as Sum, round(avg(salary)) as Avarage from employees;
5) Modifique la consulta del archivo lab_05_04.sql para mostrar el valor mínimo, el valor máximo, la suma y la media del salario de cada tipo de cargo. Vuelva a guardar lab_05_04.sql como lab_05_05.sql . Ejecute la sentencia en el archivo lab_05_05.sql .
select job_id,round(max(salary)) as Maximum, round(min(salary)) as Minimum, round(sum(salary)) as Sum, round(avg(salary)) as Avarage from employees group by job_id;
6) Escriba una consulta para mostrar el número de personas con el mismo cargo. Generalice la consulta para preguntar al usuario del departamento de recursos humanos cuál es su puesto. Guarde el script en un archivo denominado lab_05_06.sql . Ejecute la consulta. Introduzca IT_PROG cuando se le solicite.
select job_id,count(*) from employees group by job_id;
select job_id,count(*) from employees where job_id='&valor' group by job_id;
7) Determine el número de gestores sin enumerarlos en una lista. Etiquete la columna Number of Managers .
Indicación: utilice la columna MANAGER_ID para determinar el número de gestores.
select count(distinct manager_id) as "Number of Managers" from employees;
8) Busque la diferencia entre los salarios más altos y más bajos. Etiquete la columna como DIFFERENCE .
select (max(salary)-min(salary)) DIFFERENCE from employees;
9) Cree un informe para mostrar el número de gestor y el salario del empleado con menor sueldo de ese gestor. Excluya a cualquier trabajador del que desconozca su gestor. Excluya cualquier grupo en el que el salario mínimo sea 6.000 dólares o menos. Ordene la salida en orden descendente de salarios.
select manager_id,min(salary) from employees where manager_id is not null group by manager_id having min(salary)>'6000' order by min(salary) desc;
10) Cree una consulta para mostrar el número total de empleados y, de ese total, el número de empleados contratados en 1995, 1996, 1997 y 1998. Cree las cabeceras de columna adecuadas.
SELECT COUNT(*) AS "Total" , SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1995,1,0)) AS "1995" ,SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1996,1,0)) AS "1996" ,SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1997,1,0)) AS "1997" ,SUM(DECODE(TO_CHAR(hire_date,'YYYY'),1998,1,0)) AS "1998" FROM employees;
11) Cree una consulta de matriz para mostrar el cargo, el salario de ese cargo según el número de departamento y el salario total del cargo para los departamentos 20, 50, 80 y 90, proporcionando a cada columna una cabecera adecuada.
SELECT job_id,SUM (DECODE(department_id,20,salary)) AS "Departamento 20",SUM (DECODE(department_id,50,salary)) AS "Departamento 50",SUM (DECODE(department_id,80,salary)) AS "Departamento 80",SUM (DECODE(department_id,90,salary)) AS "Departamento 90",SUM(salary) AS "Salario Total" FROM employees GROUP BY job_id;
FAVOR INDICARNOS EN QUE BASE DE DATOS SE BASAN ESTOS EJERCICIOS
ResponderEliminarOracle
Eliminarusa esto:
EliminarCREATE TABLE DEPT
(DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
DNAME VARCHAR2(14) ,
LOC VARCHAR2(13) ) ;
CREATE TABLE EMP
(EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);
INSERT INTO DEPT VALUES
(10,'ACCOUNTING','NEW YORK');
--------------------------------------------------------------
CREATE TABLE BONUS
(
ENAME VARCHAR2(10) ,
JOB VARCHAR2(9) ,
SAL NUMBER,
COMM NUMBER
) ;
CREATE TABLE SALGRADE
( GRADE NUMBER,
LOSAL NUMBER,
HISAL NUMBER );
--------------------------------------------------------------
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES
(30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES
(40,'OPERATIONS','BOSTON');
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,to_date('13-JUL-87','dd-mm-rr')-85,3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('13-JUL-87', 'dd-mm-rr')-51,1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
--------------------------------------------------------------
INSERT INTO SALGRADE VALUES (1,700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);
---------
COMMIT;
con las tablas integradas de oracle
ResponderEliminargracias
ResponderEliminar