Skip to content

Commit cf52d75

Browse files
Grup By
1 parent 736b03b commit cf52d75

2 files changed

Lines changed: 88 additions & 0 deletions

File tree

035 Agrupar Registros/GroupBy.sql

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
if object_id('libros') is not null
2+
drop table libros;
3+
4+
create table libros(
5+
codigo int identity,
6+
titulo varchar(40),
7+
autor varchar(30),
8+
editorial varchar(15),
9+
precio decimal(5,2),
10+
cantidad tinyint,
11+
primary key(codigo)
12+
);
13+
14+
insert into libros
15+
values('El aleph','Borges','Planeta',15,null);
16+
insert into libros
17+
values('Martin Fierro','Jose Hernandez','Emece',22.20,200);
18+
insert into libros
19+
values('Antologia poetica','J.L. Borges','Planeta',null,150);
20+
insert into libros
21+
values('Aprenda PHP','Mario Molina','Emece',18.20,null);
22+
insert into libros
23+
values('Cervantes y el quijote','Bioy Casares- J.L. Borges','Paidos',null,100);
24+
insert into libros
25+
values('Manual de PHP', 'J.C. Paez', 'Siglo XXI',31.80,120);
26+
insert into libros
27+
values('Harry Potter y la piedra filosofal','J.K. Rowling',default,45.00,90);
28+
insert into libros
29+
values('Harry Potter y la camara secreta','J.K. Rowling','Emece',null,100);
30+
insert into libros
31+
values('Alicia en el pais de las maravillas','Lewis Carroll','Paidos',22.50,200);
32+
insert into libros
33+
values('PHP de la A a la Z',null,null,null,0);
34+
35+
-- Cantidad de libros de cada editorial:
36+
select editorial, count(*)
37+
from libros
38+
group by editorial;
39+
40+
-- Cantidad libros con precio no nulo de cada editorial:
41+
select editorial, count(precio)
42+
from libros
43+
group by editorial;
44+
45+
-- Total en dinero de los libros agrupados por editorial:
46+
select editorial, sum(precio)
47+
from libros
48+
group by editorial;
49+
50+
-- Máximo y mínimo valor de los libros agrupados por editorial:
51+
select editorial,
52+
max(precio) as mayor,
53+
min(precio) as menor
54+
from libros
55+
group by editorial;
56+
57+
-- Promedio del valor de los libros agrupados por editorial:
58+
select editorial, avg(precio)
59+
from libros
60+
group by editorial;
61+
62+
-- Contar y agrupar por editorial considerando solamente los libros cuyo precio es menor a 30 pesos:
63+
select editorial, count(*)
64+
from libros
65+
where precio<30
66+
group by editorial;
67+
68+
-- Todos los valores de editorial, incluso los que devuelven cero o "null" en la columna de agregado,
69+
-- debemos emplear la palabra clave "all" al lado de "group by":
70+
select editorial, count(*)
71+
from libros
72+
where precio<30
73+
group by all editorial;

035 Agrupar Registros/readme.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
Hemos aprendido que las funciones de agregado permiten realizar varios cálculos operando con conjuntos de registros.
2+
3+
Las funciones de agregado solas producen un valor de resumen para todos los registros de un campo. Podemos generar valores de resumen para un solo campo, combinando las funciones de agregado con la cláusula "group by", que agrupa registros para consultas detalladas.
4+
5+
Queremos saber la cantidad de libros de cada editorial, podemos tipear la siguiente sentencia:
6+
7+
select count(*) from libros
8+
where editorial='Planeta';
9+
y repetirla con cada valor de "editorial":
10+
11+
select count(*) from libros
12+
where editorial='Emece';
13+
select count(*) from libros
14+
where editorial='Paidos';
15+
...

0 commit comments

Comments
 (0)