Primer problema:
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 y en otra tabla llamada "ciudades" los nombres de las ciudades.
1- Cree las tablas:
create table visitantes(
nombre varchar(30),
edad smallint,
sexo char(1) default 'f',
domicilio varchar(30),
codigociudad smallint not null,
mail varchar(30),
montocompra decimal (6,2)
);
create table ciudades(
codigo serial,
nombre varchar(20),
primary key(codigo)
);
2- Ingrese algunos registros:
insert into ciudades(nombre) values('Cordoba');
insert into ciudades(nombre) values('Carlos Paz');
insert into ciudades(nombre) values('La Falda');
insert into ciudades(nombre) values('Cruz del Eje');
insert into visitantes values
('Susana Molina', 35,'f','Colon 123', 1, null,59.80);
insert into visitantes values
('Marcos Torres', 29,'m','Sucre 56', 1, 'marcostorres@hotmail.com',150.50);
insert into visitantes values
('Mariana Juarez', 45,'f','San Martin 111',2,null,23.90);
insert into visitantes values
('Fabian Perez',36,'m','Avellaneda 213',3,'fabianperez@xaxamail.com',0);
insert into visitantes values
('Alejandra Garcia',28,'f',null,2,null,280.50);
insert into visitantes values
('Gaston Perez',29,'m',null,5,'gastonperez1@gmail.com',95.40);
insert into visitantes values
('Mariana Juarez',33,'f',null,2,null,90);
3- Cuente la cantidad de visitas por ciudad mostrando el nombre de la ciudad (3 filas)
4- Muestre el promedio de gastos de las visitas agrupados por ciudad y sexo (4 filas)
5- Muestre la cantidad de visitantes con mail, agrupados por ciudad (3 filas)
6- Obtenga el monto de compra más alto de cada ciudad (3 filas)
Ver solución
create table visitantes(
nombre varchar(30),
edad smallint,
sexo char(1) default 'f',
domicilio varchar(30),
codigociudad smallint not null,
mail varchar(30),
montocompra decimal (6,2)
);
create table ciudades(
codigo serial,
nombre varchar(20),
primary key(codigo)
);
insert into ciudades(nombre) values('Cordoba');
insert into ciudades(nombre) values('Carlos Paz');
insert into ciudades(nombre) values('La Falda');
insert into ciudades(nombre) values('Cruz del Eje');
insert into visitantes values
('Susana Molina', 35,'f','Colon 123', 1, null,59.80);
insert into visitantes values
('Marcos Torres', 29,'m','Sucre 56', 1, 'marcostorres@hotmail.com',150.50);
insert into visitantes values
('Mariana Juarez', 45,'f','San Martin 111',2,null,23.90);
insert into visitantes values
('Fabian Perez',36,'m','Avellaneda 213',3,'fabianperez@xaxamail.com',0);
insert into visitantes values
('Alejandra Garcia',28,'f',null,2,null,280.50);
insert into visitantes values
('Gaston Perez',29,'m',null,5,'gastonperez1@gmail.com',95.40);
insert into visitantes values
('Mariana Juarez',33,'f',null,2,null,90);
select c.nombre,
count(*) as cantidad
from ciudades as c
join visitantes as v
on codigociudad=c.codigo
group by c.nombre;
select c.nombre,sexo,
avg(montocompra) as promediodecompra
from ciudades as c
join visitantes as v
on codigociudad=c.codigo
group by c.nombre,sexo;
select c.nombre,
count(mail) as tienenmail
from ciudades as c
join visitantes as v
on codigociudad=c.codigo
group by c.nombre;
select c.nombre,
max(montocompra)
from visitantes as v
join ciudades as c
on codigociudad=c.codigo
group by c.nombre;