Unidad 5. Ejercicio paso a paso: Agrupar filas con GROUP BY


Nota: Para realizar los ejercicios, utiliza la base de datos GestionSimples.

Objetivo

Realizar consultas de resumen utilizando la cláusula GROUP BY para agrupar filas.

Ejercicio paso a paso

Hallar el importe medio de pedidos realizados por cada empleado.

SELECT rep, AVG(importe) AS [Importe medio]

FROM pedidos

GROUP BY rep;

Resultado:

rep Importe medio
101 88,76
102 25,92
103 21,00
105 154,5492
106 23,04
107 114,7733
108 40,9042
109 35,525
110 159,6066

Repetir la consulta pero para que también salgan los empleados que no han vendido nada.

SELECT numemp, AVG(importe) AS [Importe medio]

FROM pedidos RIGHT JOIN empleados ON rep = numemp

GROUP BY numemp;

Resultado:

rep Importe medio
101 88,76
102 25,92
103 21,00
104 NULL
105 154,5492
106 23,04
107 114,7733
108 40,9042
109 35,525
110 159,6066
111 NULL
112 NULL
113 NULL
114 NULL

¿Cuál es en cada una de las oficinas, el rango de cuotas asignadas a sus vendedores?

SELECT oficinas.oficina, MIN(cuota) AS [Cuota mínima], MAX(cuota) AS [Cuota máxima]

FROM oficinas LEFT JOIN empleados ON empleados.oficina = oficinas.oficina

GROUP BY oficinas.oficina;

Resultado:

oficina Cuota mínima Cuota máxima
11 27500,00 27500,00
12 20000,00 30000,00
13 35000,00 40000,00
21 10000,00 35000,00
22 30000,00 30000,00
23 NULL NULL
24 NULL NULL
25 NULL NULL
26 NULL NULL
27 NULL NULL
28 NULL NULL
29 NULL NULL
30 NULL NULL
31 NULL NULL

Listar cuántos empleados están asignados a cada oficina, incluso las que no tienen.

SELECT oficinas.oficina, COUNT(numemp) AS Empleados

FROM oficinas LEFT JOIN empleados ON empleados.oficina = oficinas.oficina

GROUP BY oficinas.oficina;

Resultado:

oficina Empleados
11 1
12 3
13 2
21 3
22 1
23 0
24 0
25 0
26 0
27 0
28 0
29 0
30 0
31 0

Listar cuántos clientes son atendidos por cada empleado (el cliente ha realizado un pedido con él).

SELECT rep, COUNT(DISTINCT clie) AS [Clientes atendidos]

FROM pedidos

GROUP BY rep;

Resultado:

rep Clientes
atendidos
101 3
102 2
103 1
105 2
106 2
107 2
108 3
109 1
110 2

   Inicio    



.