Está en la página 1de 7

4. CONSULTAS CON AGRUPAMIENTO DE FILAS.

1. Hallar para cada departamento el salario medio, el mnimo, el mximo y la media aritmtica de stos. SELECT AVG (SALAR),MIN (SALAR),MAX (SALAR) FROM TEMPLE GROUP BY NUMDE 2. Hallar por departamentos la edad en aos cumplidos del empleado ms viejo del departamento que tiene comisin. Ordenar el resultado por edades. SELECT NUMDE, MAX(CONVERT(INT,(DATEDIFF(DAY,FECNA,GETDATE())/365.25))) FROM TEMPLE WHERE COMIS<>0 GROUP BY NUMDE

. !"rupando por departamento y n#mero de $ijos, $allar cuntos empleados $ay en cada "rupo. SELECT NUMDE,NUMHI,COUNT (NOMEM) [NUMEROS DE EMPLEADOS] FROM TEMPLE GROUP BY NUMDE,NUMHI ORDER BY NUMDE,NUMHI

%. Hallar el salario mximo y el mnimo para cada "rupo de empleados con i"ual n#mero de $ijos y que tienen al menos uno, y slo si $ay ms de un empleado en el "rupo y el salario mximo de ste excede a 2&&&&& ptas. SELECT NUMHI,MAX(SALAR)[SALARIO MAXIMO],MIN(SALAR)[SALARIO MINIMO] FROM TEMPLE GROUP BY NUMHI HAVING NUMHI>=1 AND COUNT(NUMEMP)>1 AND MAX(SALAR)>200

'. Hallar el salario medio por departamento para aquellos departamentos cuyo salario mximo es in(erior al salario medio de todos los empleados. SELECT NUMDE,AVG(SALAR) AS [SALARIO MEDIO] FROM TEMPLE GROUP BY NUMDE HAVING MAX(SALAR)< (SELECT AVG(SALAR) FROM TEMPLE)

). Hallar el salario medio y la edad media en aos para cada "rupo de empleados con i"ual comisin y para los que no la ten"an. SELECT COMIS,AVG(SALAR)AS [SALARIO MEDIO],AVG(CONVERT(INT,DATEDIFF(DAY,FECNA,GETDATE())/365.25)) AS [EDAD MEDIA] FROM TEMPLE GROUP BY COMIS

*. +ara los departamentos en los que $ay al"#n empleado cuyo salario sea mayor que %&&&&& ptas. al mes $allar el n#mero de empleados y la suma de sus salarios, comisiones y n#mero de $ijos. SELECT NUMDE AS [NUMERO DE DEPARTAMENTO], COUNT(NUMEMP)[CANTIDAD DE EMPLEADOS], SUM(SALAR)AS [SUMA SALARIOS], SUM(COMIS)AS [SUMA COMISIONES], SUM(NUMHI)AS [SUMA NUMHI] FROM TEMPLE GROUP BY NUMDE,SALAR,COMIS,NUMHI HAVING NUMDE IN(SELECT NUMDE FROM TEMPLE WHERE SALAR>400)

1&& 1&& 1&& 11& 11& 11& 121 121 121 121

1 1 1 1 1 1 1 1 1 1

,& %'& *2& 2&& 21' %,& 1-& && 1& %%&

& & & & & '& & & & &

2 & ) 1 1 2 1 %

&

122 122 122 122 1 & 1 & 1 &

1 1 1 1 1 1 1

1*' ,& %&' %'& 2-& %&& %2&

& & & & & & &

& & 2 1 ' & &

COMO SE PUEDE INTERPRETAR DE DOS MANERAS (O AS LO CREO YO) LO HE HECHO DE AMBAS MANERAS. COMO VES, REALMENTE ES EL MISMO RESULTADO

SELECT NUMDE AS [NUMERO DE DEPARTAMENTO], COUNT(NUMEMP)[CANTIDAD DE EMPLEADOS], SUM(SALAR)AS [SUMA SALARIOS], SUM(COMIS)AS [SUMA COMISIONES], SUM(NUMHI)AS [SUMA NUMHI] FROM TEMPLE WHERE NUMDE IN(SELECT NUMDE FROM TEMPLE WHERE SALAR>400) GROUP BY NUMDE

1&& 11& 121 122 1 & % %

1''& ,-' 12%& 1%1& 111&

& '& & & &

, % ,

'

,. +ara los departamentos en los que la anti".edad media de sus empleados supera a la edad media de la empresa, $allar el salario mnimo, el medio y el mximo. Select numde'Numero de Departamento', MIN(salar)'Salario Minimo', max(salar)'Salario Maximo', avg(salar)'Salario Medio' from TEMPLE group by NUMDE having AVG(CONVERT(int,datediff(day,FECNA,getdate())/365.25))> (select avg((CONVERT(int,datediff(day,FECNA,getdate())/365.25))) from temple) order by NUMDE asc

-. +ara los departamentos en los que $aya al"#n empleado con ms de 1& aos de anti".edad y tales que la media de $ijos por cada uno de estos empleados sea superior a 1, $allar el salario medio de estos empleados. select numde 'N de Departamento', AVG(salar) 'Salario Medio' from temple group by numde having numde = some (select numde from TEMPLE where NUMHI >1 and CONVERT(int,datediff(day,FECIN,getdate())/365.25)> 10)

1&. !"rupando por n#mero de $ijos, $allar la media por $ijo del total de salario y comisin. SELECT numhi AS [NUMERO DE HIJOS],SUM((salar+comis)/numhi)AS[MEDIA DEL SALARIO POR HIJOS] FROM TEMPLE GROUP BY NUMHI HAVING NUMHI>0

11. +ara cada departamento, $allar la media de la comisin con respecto a los empleados que la reci/en y con respecto al total de empleados. SELECT numde, avg(comis)as media FROM Temple WHERE comis>0 group by NUMDE union select numde, SUM(COMIS)/COUNT(*) from TEMPLE group BY numde

12. +ara cada extensin tele(nica, $allar cuntos empleados la usan y el salario medio de stos. SELECT EXTEL,COUNT (NUMEMP) [CANTIDAD DE EMPLEADOS],AVG (SALAR)AS [SALARIO MEDIO] FROM TEMPLE GROUP BY EXTEL 1 . +ara cada extensin tele(nica y cada departamento, $allar cuntos empleados la usan y el salario medio de stos. SELECT EXTEL,NUMDE,COUNT (NUMEMP) [CANTIDAD DE EMPLEADOS],AVG (SALAR)AS [SALARIO MEDIO] FROM TEMPLE GROUP BY EXTEL,NUMDE ORDER BY EXTEL,NUMDE

1%. Hallar los n#meros de extensin tele(nica mayores de los diversos departamentos, sin incluir los n#meros de stos. SELECT MAX(EXTEL) FROM TEMPLE GROUP BY NUMDE HAVING MAX(EXTEL)>=ALL(SELECT MAX(EXTEL) FROM TEMPLE)

1'. +ara cada extensin tele(nica, $allar el n#mero de departamentos a los que sirve. SELECT DISTINCT EXTEL,NUMDE FROM TEMPLE ORDER BY EXTEL,NUMDE

1). +ara los departamentos en los que al"#n empleado tiene comisin, $allar cuntos empleados $ay en promedio por cada extensin tele(nica. SELECT NUMDE,COUNT(NUMEMP)/COUNT(DISTINCT EXTEL)AS [PROMEDIO POR EXTENSION] FROM TEMPLE GROUP BY NUMDE HAVING NUMDE IN (SELECT DISTINCT(NUMDE) FROM TEMPLE WHERE COMIS IS NOT NULL) 1*. +ara los departamentos en los que al"#n empleado tiene comisin, $allar cuntos empleados con comisin $ay en promedio por cada extensin tele(nica. SELECT NUMDE,COUNT(NOMEM)/COUNT(DISTINCT EXTEL) FROM TEMPLE WHERE COMIS IS NOT NULL GROUP BY NUMDE 1,. O/tener por orden creciente los n#meros de extensiones tele(nicas de los departamentos que tienen ms de dos y que son compartidas por menos de % empleados, excluyendo las que no son compartidas. SELECT NUMDE,COUNT (DISTINCT EXTEL)AS[CANTIDAD EXT. TELEFONICAS] FROM TEMPLE GROUP BY NUMDE HAVING COUNT (DISTINCT EXTEL)>2 AND COUNT(DISTINCT NOMEM)<4 ANDCOUNT(NUMEMP)<4 AND COUNT(NUMEMP)>1 ORDER BY NUMDE

1-. +ara los departamentos cuyo salario medio supera al de la empresa, $allar cuntas extensiones tele(nicas tienen. SELECT NUMDE, COUNT(DISTINCT EXTEL)AS [CANTIDAD DE EXTENSIONES] FROM TEMPLE GROUP BY NUMDE HAVING AVG(SALAR)>(SELECT AVG(SALAR) FROM TEMPLE)

2&. +ara cada centro, $allar los presupuestos medios de los departamentos diri"idos en propiedad y en (unciones, excluyendo del resultado el n#mero de centro. SELECT AVG(PRESU)[PRESUPUESTO MEDIO],TIDIR FROM TDEPTO GROUP BY NUMCE,TIDIR

21. Hallar el mximo valor de la suma de los salarios de los departamentos. SELECT (SUM(SALAR))AS [SUMA SALARIO MAXIMO],NUMDE FROM TEMPLE GROUP BY NUMDE HAVING SUM(SALAR)>=ALL(SELECT SUM(SALAR) FROM TEMPLE GROUP BY NUMDE)

También podría gustarte