42 - Cláusulas compute y compute by |
La cláusula compute y compute by están discontinuadas en las versiones de SQL Server 2012 y sucesivas.
No utilice esta característica en nuevos proyectos y modifique lo antes posible las aplicaciones que actualmente la utilizan. En su lugar, utilice rollup.
La provincia almacena en una tabla llamada "inmuebles" los siguientes datos de los inmuebles y sus propietarios para cobrar impuestos: 1- Elimine la tabla si existe: if object_id('inmuebles') is not null drop table inmuebles; 2- Créela con la siguiente estructura: create table inmuebles ( documento varchar(8) not null, nombre varchar(30), domicilio varchar(20), barrio varchar(20), ciudad varchar(20), tipo char(1),--b=baldio, e: edificado superficie decimal (8,2), monto decimal (8,2) ); 3- Ingrese algunos registros: insert into inmuebles values ('11111111','Alberto Acosta','Avellaneda 800','Centro','Cordoba','e',100,1200); insert into inmuebles values ('11111111','Alberto Acosta','Sarmiento 245','Gral. Paz','Cordoba','e',200,2500); insert into inmuebles values ('22222222','Beatriz Barrios','San Martin 202','Centro','Cordoba','e',250,1900); insert into inmuebles values ('33333333','Carlos Caseres','Paso 1234','Alberdi','Cordoba','b',200,1000); insert into inmuebles values ('33333333','Carlos Caseres','Guemes 876','Alberdi','Cordoba','b',300,1500); insert into inmuebles values ('44444444','Diana Dominguez','Calderon 456','Matienzo','Cordoba','b',200,800); insert into inmuebles values ('55555555','Estela Fuentes','San Martin 321','Flores','Carlos Paz','e',500,4500); insert into inmuebles values ('55555555','Estela Fuentes','Lopez y Planes 853','Alberdi','Cordoba','e',350,2200); 4- Muestre todos los datos y el promedio del monto empleando "compute" (1 resultado parcial) 5- Empleando cláusulas "compute" consulte el promedio de las superficies y el total de los montos (2 columnas extras) 6- Realice la misma consulta anterior pero empleando "compute by" para obtener resultados parciales por documento,barrio y ciudad. 7- Realice la misma consulta anterior pero con resultados parciales por documento y barrio (6 resultados parciales dobles) 8- Realice la misma consulta anterior pero con resultados parciales por documento (4 resultados parciales dobles) 9- Intente realizar la misma consulta anterior pero con resultados parciales por documento y ciudad. Aparece un mensaje de error indicando que el subgrupo de campos listados luego del "by" no es correcto. 10- Combine cláusulas "compute" con "compute by" para averiguar el total de monto a pagar por propietario y el promedio de monto de todos (4 resultados parciales y 1 general)Ver solución
if object_id('inmuebles') is not null drop table inmuebles; create table inmuebles ( documento varchar(8) not null, nombre varchar(30), domicilio varchar(20), barrio varchar(20), ciudad varchar(20), tipo char(1),--b=baldio, e: edificado superficie decimal (8,2), monto decimal (8,2) ); insert into inmuebles values ('11111111','Alberto Acosta','Avellaneda 800','Centro','Cordoba','e',100,1200); insert into inmuebles values ('11111111','Alberto Acosta','Sarmiento 245','Gral. Paz','Cordoba','e',200,2500); insert into inmuebles values ('22222222','Beatriz Barrios','San Martin 202','Centro','Cordoba','e',250,1900); insert into inmuebles values ('33333333','Carlos Caseres','Paso 1234','Alberdi','Cordoba','b',200,1000); insert into inmuebles values ('33333333','Carlos Caseres','Guemes 876','Alberdi','Cordoba','b',300,1500); insert into inmuebles values ('44444444','Diana Dominguez','Calderon 456','Matienzo','Cordoba','b',200,800); insert into inmuebles values ('55555555','Estela Fuentes','San Martin 321','Flores','Carlos Paz','e',500,4500); insert into inmuebles values ('55555555','Estela Fuentes','Lopez y Planes 853','Alberdi','Cordoba','e',350,2200); select *from inmuebles compute avg(monto); select *from inmuebles compute avg(superficie),sum(monto); select *from inmuebles order by documento,barrio,ciudad compute avg(superficie),sum(monto) by documento,barrio,ciudad; select *from inmuebles order by documento,barrio,ciudad compute avg(superficie),sum(monto) by documento,barrio; select *from inmuebles order by documento,barrio,ciudad compute avg(superficie),sum(monto) by documento; select *from inmuebles order by documento,barrio,ciudad compute avg(superficie),sum(monto) by documento,ciudad; select *from inmuebles order by documento compute sum(monto) compute avg(monto) by documento;