34 - Funciones de agrupamiento (count - max - min - sum - avg)


Problema:

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.




Retornar