34 - Funciones de agrupamiento (count - max - min - sum - avg) |
Trabajamos con la tabla "libros" que registra la información de los libros que vende una librería.
Eliminamos la tabla, si existe:
drop table if exists libros;
Creamos la tabla:
create table libros( codigo int unsigned auto_increment, titulo varchar(40) not null, autor varchar(30), editorial varchar(15), precio decimal(5,2) unsigned, cantidad mediumint unsigned, primary key(codigo) );
Ingresamos algunos registros:
insert into libros (titulo,autor,editorial,precio,cantidad) values('El aleph','Borges','Planeta',15,100); insert into libros (titulo,autor,editorial,precio,cantidad) values('Martin Fierro','Jose Hernandez','Emece',22.20,200); insert into libros (titulo,autor,editorial,precio,cantidad) values('Antologia poetica','J.L. Borges','Planeta',40,150); insert into libros (titulo,autor,editorial,precio,cantidad) values('Aprenda PHP','Mario Molina','Emece',18.20,200); insert into libros (titulo,autor,editorial,precio,cantidad) values('Cervantes y el quijote','Bioy Casares- J.L. Borges','Paidos',36.40,100); insert into libros (titulo,autor,editorial,precio,cantidad) values('Manual de PHP', 'J.C. Paez', 'Paidos',30.80,120); insert into libros (titulo,autor,editorial,precio,cantidad) values('Harry Potter y la piedra filosofal','J.K. Rowling','Paidos',45.00,50); insert into libros (titulo,autor,editorial,precio,cantidad) values('Harry Potter y la camara secreta','J.K. Rowling','Paidos',46.00,100); insert into libros (titulo,autor,editorial,precio,cantidad) values('Alicia en el pais de las maravillas','Lewis Carroll','Paidos',null,200);
Para conocer la suma de las cantidades de libros que tenemos disponibles tipeamos:
select sum(cantidad) from libros;
Retorna 1220; verifique la suma, sumando los valores de todos los registros del campo "cantidad".
Solicitamos la suma de las cantidades de los libros de la editorial "Planeta":
select sum(cantidad) from libros where editorial ='Planeta';
Retorna 250; verifique el total sumando las cantidades de los libros cuya editorial sea "Planeta".
Si queremos saber cuál es el mayor precio de los libros usamos:
select max(precio) from libros;
Devuelve 46.
Verifiquemos lo anterior realizando una consulta ordenada por precio de forma descendente:
select * from libros order by precio desc;
Para obtener el valor mínimo de los libros de "Rowling" utilizamos la siguiente sentencia:
select min(precio) from libros where autor like '%Rowling%';
Retorna 45.
Verifiquemos el resultado realizando una consulta "select" con la condición anterior ordenada por precio:
select * from libros where autor like '%Rowling%' order by 5;
Solicitamos el promedio del precio de los libros que tratan sobre "PHP":
select avg(precio) from libros where titulo like '%PHP%';
Retorna 24.50...
Verifiquemos el resultado seleccionado los libros de "PHP" y calculando el promedio manualmente:
select * from libros where titulo like '%PHP%';
Recuerde que no debe haber espacio entre el nombre de la función y el paréntesis. Pruebe las siguientes sentencias:
select count(*) from libros; select count (*) from libros;
La segunda no se ejecuta, aparece un mensaje de error.