41 - Función grouping |
Una empresa tiene registrados sus empleados en una tabla llamada "empleados". 1- Elimine la tabla si existe: if object_id('empleados') is not null drop table empleados; 2- Créela con la siguiente estructura: create table empleados ( documento varchar(8) not null, nombre varchar(30), sexo char(1), estadocivil char(1),--c=casado, s=soltero,v=viudo seccion varchar(20), primary key (documento) ); 3- Ingrese algunos registros: insert into empleados values ('22222222','Alberto Lopez','m','c','Sistemas'); insert into empleados values ('23333333','Beatriz Garcia','f','c','Administracion'); insert into empleados values ('24444444','Carlos Fuentes','m','s','Administracion'); insert into empleados values ('25555555','Daniel Garcia','m','s','Sistemas'); insert into empleados values ('26666666','Ester Juarez',null,'c','Sistemas'); insert into empleados values ('27777777','Fabian Torres',null,'s','Sistemas'); insert into empleados values ('28888888','Gabriela Lopez','f',null,'Sistemas'); insert into empleados values ('29999999','Hector Garcia','m',null,'Administracion'); 4- Cuente la cantidad de empleados agrupados por sexo y estado civil, empleando "rollup". Es dificil distinguir los valores de detalle y resumen. 5- Realice la misma consulta anterior pero emplee la función "grouping" para los dos campos por los que se agrupa para distinguir los valores de resumen y de detalle. Note que las columnas de resumen contienen 1 y las de detalle 0. 6- Realice la misma consulta anterior pero con "cube" en lugar de "rollup", distinguiendo los valores de resumen y de detalle. Note que las columnas de resumen contienen 1 y las de detalle 0.Ver solución
if object_id('empleados') is not null drop table empleados; create table empleados ( documento varchar(8) not null, nombre varchar(30), sexo char(1), estadocivil char(1),--c=casado, s=soltero,v=viudo seccion varchar(20), primary key (documento) ); insert into empleados values ('22222222','Alberto Lopez','m','c','Sistemas'); insert into empleados values ('23333333','Beatriz Garcia','f','c','Administracion'); insert into empleados values ('24444444','Carlos Fuentes','m','s','Administracion'); insert into empleados values ('25555555','Daniel Garcia','m','s','Sistemas'); insert into empleados values ('26666666','Ester Juarez',null,'c','Sistemas'); insert into empleados values ('27777777','Fabian Torres',null,'s','Sistemas'); insert into empleados values ('28888888','Gabriela Lopez','f',null,'Sistemas'); insert into empleados values ('29999999','Hector Garcia','m',null,'Administracion'); select sexo,estadocivil, count(*) as cantidad from empleados group by sexo,estadocivil with rollup; select sexo,estadocivil, count(*) as cantidad, grouping(sexo) as 'resumen sexo', grouping(estadocivil) as 'resumen estado civil' from empleados group by sexo,estadocivil with rollup; select sexo,estadocivil, count(*) as cantidad, grouping(sexo) as 'resumen sexo', grouping(estadocivil) as 'resumen estado civil' from empleados group by sexo,estadocivil with cube;