34 - Funciones de agrupamiento (count - max - min - sum - avg) |
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- Elimine la tabla "visitantes", si existe. 2- Créela con la siguiente estructura: create table visitantes( nombre varchar(30), edad tinyint unsigned, sexo char(1), domicilio varchar(30), ciudad varchar(20), telefono varchar(11), montocompra decimal (6,2) unsigned ); Note que no tiene clave primaria, no la necesita. 3- Ingrese algunos registros: insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra) values ('Susana Molina', 28,'f','Colon 123','Cordoba',null,45.50); insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra) values ('Marcela Mercado',36,'f','Avellaneda 345','Cordoba','4545454',0); insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra) values ('Alberto Garcia',35,'m','Gral. Paz 123','Alta Gracia','03547123456',25); insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra) values ('Teresa Garcia',33,'f','Gral. Paz 123','Alta Gracia','03547123456',0); insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra) values ('Roberto Perez',45,'m','Urquiza 335','Cordoba','4123456',33.20); insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra) values ('Marina Torres',22,'f','Colon 222','Villa Dolores','03544112233',25); insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra) values ('Julieta Gomez',24,'f','San Martin 333','Alta Gracia','03547121212',53.50); insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra) values ('Roxana Lopez',20,'f','Triunvirato 345','Alta Gracia',null,0); insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra) values ('Liliana Garcia',50,'f','Paso 999','Cordoba','4588778',48); insert into visitantes (nombre,edad, sexo,domicilio,ciudad,telefono,montocompra) values ('Juan Torres',43,'m','Sarmiento 876','Cordoba','4988778',15.30); 4- Solicite la cantidad de visitantes al stand (10 registros): select count(*) from visitantes; 5- Muestre la suma de la compra de todos los visitantes de "Alta Gracia" (78.5): select sum(montocompra) from visitantes where ciudad='Alta Gracia'; 6- Muestre el valor máximo de las compras efectuadas (53.50): select max(montocompra) from visitantes; 7- Muestre la edad menor de los visitantes (20): select min(edad) from visitantes; 8- Muestre el promedio de edades de los visitantes (33.66): select avg(edad) from visitantes; 9- Muestre el promedio del monto de compra (24.55): select avg(montocompra) from visitantes;
A) Una academia de informática dicta distintos cursos y almacena en una tabla llamada "inscripciones" la siguiente información: nombre del curso, documento del alumno, fecha en que se inscribe el alumno, monto del pago (algunos dejan una seña, otros pagan el curso completo). 1- Elimine la tabla si existe. 2- cree la tabla: create table inscripciones( nombre varchar(30), documento char(8), fechainscripto date, pago decimal(5,2) unsigned not null ); 3- Ingrese algunos registros: insert into inscripciones values('PHP básico', '22333444','2006-08-10',50); insert into inscripciones values('PHP básico', '23333444','2006-08-10',50); insert into inscripciones values('PHP básico', '24333444','2006-08-11',30); insert into inscripciones values('PHP experto', '25333444','2006-08-11',0); insert into inscripciones values('PHP experto', '26333444','2006-08-12',200); insert into inscripciones values('JavaScript básico', '22333444','2006-08-10',100); insert into inscripciones values('Operador de PC', '27333444','2006-08-12',10); insert into inscripciones values('Operador de PC', '28333444','2006-08-13',50); insert into inscripciones values('Operador de PC', '29333444','2006-08-14',40); insert into inscripciones values('Operador de PC', '30333444','2006-08-14',0); insert into inscripciones values('Diseño web', '29333444','2006-08-14',200); insert into inscripciones values('Diseño web', '30333444','2006-08-14',0); 4- calcule la cantidad de inscriptos para el curso de "Operador de PC": select count(*) from inscripciones where nombre='Operador de PC'; 5- Calcule la suma recaudada por los pagos de los cursos el día "2006-08-10": select sum(pago) from inscripciones where fechainscripto='2006-08-10'; 6- Calcule el promedio de los pagos de los inscriptos: select avg(pago) from inscripciones; 7- Muestre el máximo y el mínimo valor de pago, sin considerar quienes no pagan: select max(pago),min(pago) from inscripciones where pago>0; 8- Vea en cuántos cursos se inscribió el alumno con documento "22333444" y cuánto abonó en total: select count(*) as 'cantidad', sum(pago) as 'Abono' from inscripciones where documento='22333444'; B) Trabaje con la tabla "peliculas" de un video club. 1- Elimine la tabla, si existe. 2- Créela con la siguiente estructura: -codigo (entero sin signo, autoincrementable), -titulo (cadena de 30), not null, -actor (cadena de 20), -duracion (entero sin signo no mayor a 200 aprox.), -clave primaria (codigo). 3- Ingrese los siguientes registros: insert into peliculas (titulo,actor,duracion) values('Mision imposible','Tom Cruise',120); insert into peliculas (titulo,actor,duracion) values('Harry Potter y la piedra filosofal','Daniel R.',180); insert into peliculas (titulo,actor,duracion) values('Harry Potter y la camara secreta','Daniel R.',190); insert into peliculas (titulo,actor,duracion) values('Mision imposible 2','Tom Cruise',120); insert into peliculas (titulo,actor,duracion) values('Mujer bonita','Richard Gere',120); insert into peliculas (titulo,actor,duracion) values('Tootsie','D. Hoffman',90); insert into peliculas (titulo,actor,duracion) values('Un oso rojo',null,100); insert into peliculas (titulo,actor,duracion) values('Elsa y Fred','China Zorrilla',110); insert into peliculas (titulo,actor,duracion) values('Mrs. Johns','Richard Gere',180); 4- Muestre el valor de duración más grande: select max(duracion)from peliculas; 5- Muestre el promedio de duración de las películas: select avg(duracion) from peliculas; 6- Cuente la cantidad de películas que comiencen con la cadena "Harry Potter": select count(*) from peliculas where titulo like 'Harry Potter%'; 7- Un socio alquiló todas las películas en las cuales trabaja "Richard Gere", quiere saber el total de minutos que duran todas sus películas: select sum(duracion) from peliculas where actor='Richard Gere'; C) Una concesionaria de autos vende autos usados y almacena la información en una tabla llamada "autos". 1- Elimine la tabla "autos" si existe. 2- Cree la tabla con la siguiente estructura: create table autos( patente char(6), marca varchar(20), modelo char(4), precio decimal(8,2) unsigned, primary key(patente) ); 3- Ingrese los siguientes registros: insert into autos values('ACD123','Fiat 128','1970',15000); insert into autos values('ACG234','Renault 11','1990',40000); insert into autos values('BCD333','Peugeot 505','1990',80000); insert into autos values('GCD123','Renault Clio','1990',70000); insert into autos values('BCC333','Renault Megane','1998',95000); insert into autos values('BVF543','Fiat 128','1975',20000); 4- Muestre el valor del auto más caro y más barato: select max(precio), min(precio) from autos; 5- Muestre el valor de auto más caro de 1990: select max(precio) from autos where modelo='1990'; 6- Muestre el promedio de los precios de los autos "Fiat 128": select avg(precio) from autos where marca='Fiat 128'; 7- Calcule el valor en dinero de todos los autos marca "Renault" con modelos menores a "1995": select sum(precio) from autos where marca like '%Renault%' and modelo<1995; D) Un comercio guarda la información de sus ventas en una tabla llamada "facturas" en la que registra el número de factura, la descripción de los items comprados, el precio por unidad de los items y la cantidad. 1- Elimine la tabla si existe. 2- Cree la tabla: create table facturas( numero int(10) zerofill, descripcion varchar(30), precioporunidad decimal(5,2) unsigned, cantidad tinyint unsigned ); 3- Ingrese algunos registros: insert into facturas values(504,'escuadra 20 cm.',2.5,100); insert into facturas values(504,'escuadra 50 cm.',5,80); insert into facturas values(2002,'compas plastico',8,120); insert into facturas values(2002,'compas metal',15.4,100); insert into facturas values(2002,'escuadra 20 cm.',2.5,100); insert into facturas values(4567,'escuadra 50 cm.',5,200); 4- Cuente la cantidad de items de la factura número "2002": select count(*) from facturas where numero='2002'; 5- Sume la cantidad de productos de la factura número "2002": select sum(cantidad) from facturas where numero='2002'; 6- Muestre el total en dinero de la factura "504": select sum(cantidad*precioporunidad) from facturas where numero='504';