33 - Seleccionar grupos (having) |
Una empresa tiene registrados sus clientes en una tabla llamada "clientes". 1- Créela con la siguiente estructura: create table clientes ( codigo serial, nombre varchar(30) not null, domicilio varchar(30), ciudad varchar(20), provincia varchar (20), telefono varchar(11), primary key(codigo) ); 3- Ingrese algunos registros: insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Lopez Marcos','Colon 111','Cordoba','Cordoba','null'); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Perez Ana','San Martin 222','Cruz del Eje','Cordoba','4578585'); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Garcia Juan','Rivadavia 333','Villa del Rosario','Cordoba','4578445'); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Perez Luis','Sarmiento 444','Rosario','Santa Fe',null); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Pereyra Lucas','San Martin 555','Cruz del Eje','Cordoba','4253685'); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Gomez Ines','San Martin 666','Santa Fe','Santa Fe','0345252525'); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Torres Fabiola','Alem 777','Villa del Rosario','Cordoba','4554455'); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Lopez Carlos',null,'Cruz del Eje','Cordoba',null); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Ramos Betina','San Martin 999','Cordoba','Cordoba','4223366'); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Lopez Lucas','San Martin 1010','Posadas','Misiones','0457858745'); 3- Obtenga el total de los registros agrupados por ciudad y provincia (6 filas) 4- Obtenga el total de los registros agrupados por ciudad y provincia sin considerar los que tienen menos de 2 clientes (3 filas)Ver solución
drop table if exists clientes; create table clientes ( codigo serial, nombre varchar(30) not null, domicilio varchar(30), ciudad varchar(20), provincia varchar (20), telefono varchar(11), primary key(codigo) ); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Lopez Marcos','Colon 111','Cordoba','Cordoba','null'); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Perez Ana','San Martin 222','Cruz del Eje','Cordoba','4578585'); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Garcia Juan','Rivadavia 333','Villa del Rosario','Cordoba','4578445'); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Perez Luis','Sarmiento 444','Rosario','Santa Fe',null); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Pereyra Lucas','San Martin 555','Cruz del Eje','Cordoba','4253685'); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Gomez Ines','San Martin 666','Santa Fe','Santa Fe','0345252525'); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Torres Fabiola','Alem 777','Villa del Rosario','Cordoba','4554455'); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Lopez Carlos',null,'Cruz del Eje','Cordoba',null); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Ramos Betina','San Martin 999','Cordoba','Cordoba','4223366'); insert into clientes(nombre,domicilio,ciudad,provincia,telefono) values ('Lopez Lucas','San Martin 1010','Posadas','Misiones','0457858745'); select ciudad, provincia, count(*) as cantidad from clientes group by ciudad,provincia; select ciudad, provincia, count(*) as cantidad from clientes group by ciudad,provincia having count(*)>1;
Un comercio que tiene un stand en una feria registra en una tabla llamada "visitantes" algunos datos de las personas que visitan o compran en su stand para luego enviarle publicidad de sus productos. 1- Créela con la siguiente estructura: create table visitantes( nombre varchar(30), edad smallint, sexo char(1), domicilio varchar(30), ciudad varchar(20), telefono varchar(11), montocompra decimal(6,2) not null ); 2- Ingrese algunos registros: insert into visitantes values ('Susana Molina',28,'f',null,'Cordoba',null,45.50); insert into visitantes values ('Marcela Mercado',36,'f','Avellaneda 345','Cordoba','4545454',22.40); insert into visitantes values ('Alberto Garcia',35,'m','Gral. Paz 123','Alta Gracia','03547123456',25); insert into visitantes values ('Teresa Garcia',33,'f',default,'Alta Gracia','03547123456',120); insert into visitantes values ('Roberto Perez',45,'m','Urquiza 335','Cordoba','4123456',33.20); insert into visitantes values ('Marina Torres',22,'f','Colon 222','Villa Dolores','03544112233',95); insert into visitantes values ('Julieta Gomez',24,'f','San Martin 333','Alta Gracia',null,53.50); insert into visitantes values ('Roxana Lopez',20,'f','null','Alta Gracia',null,240); insert into visitantes values ('Liliana Garcia',50,'f','Paso 999','Cordoba','4588778',48); insert into visitantes values ('Juan Torres',43,'m','Sarmiento 876','Cordoba',null,15.30); 3- Obtenga el total de las compras agrupados por ciudad y sexo de aquellas filas que devuelvan un valor superior a 50 (3 filas) 4- Agrupe por ciudad y sexo, muestre para cada grupo el total de visitantes, la suma de sus compras y el promedio de compras, ordenado por la suma total y considerando las filas con promedio superior a 30 (3 filas)
drop table if exists visitantes; create table visitantes( nombre varchar(30), edad smallint, sexo char(1), domicilio varchar(30), ciudad varchar(20), telefono varchar(11), montocompra decimal(6,2) not null ); insert into visitantes values ('Susana Molina',28,'f',null,'Cordoba',null,45.50); insert into visitantes values ('Marcela Mercado',36,'f','Avellaneda 345','Cordoba','4545454',22.40); insert into visitantes values ('Alberto Garcia',35,'m','Gral. Paz 123','Alta Gracia','03547123456',25); insert into visitantes values ('Teresa Garcia',33,'f',default,'Alta Gracia','03547123456',120); insert into visitantes values ('Roberto Perez',45,'m','Urquiza 335','Cordoba','4123456',33.20); insert into visitantes values ('Marina Torres',22,'f','Colon 222','Villa Dolores','03544112233',95); insert into visitantes values ('Julieta Gomez',24,'f','San Martin 333','Alta Gracia',null,53.50); insert into visitantes values ('Roxana Lopez',20,'f','null','Alta Gracia',null,240); insert into visitantes values ('Liliana Garcia',50,'f','Paso 999','Cordoba','4588778',48); insert into visitantes values ('Juan Torres',43,'m','Sarmiento 876','Cordoba',null,15.30); select ciudad,sexo, sum(montocompra) as Total from visitantes group by ciudad,sexo having sum(montocompra)>50; select ciudad,sexo, count(*) as cantidad, sum(montocompra) as total, avg(montocompra) as promedio from visitantes group by ciudad,sexo having avg(montocompra)>30 order by total;