Está en la página 1de 32

BASES DE DATOS

Funciones de agrupamiento y JOIN de Tablas

Agenda
Funciones

de agrupamiento.
Uso del GROUP BY.
Teora del uso de JOIN.
SELECT con JOIN de tablas.

Funciones de Agrupacin

MAX

MIN

SUM

SELECT MAX(PRECIO) FROM ARTICULO


SELECT MIN(PRECIO) FROM ARTICULO
SELECT SUM(PRECIO) FROM ARTICULO

COUNT

AVG

SELECT COUNT(*) FROM ARTICULO


SELECT AVG(PRECIO) FROM ARTICULO
3

Uso del GROUP BY


El

uso de GROUP BY sirve hacer agrupaciones de datos


dentro de una instruccin SELECT.

Sintaxis:

SELECT CAMPO1, CAMPO2, FUNCION(CAMPO3)


FROM NOMBRETABLA
GROUP BY CAMPO1, CAMPO2;
4

Uso del GROUP BY


SELECT CED_CLIENTE, SUM(MONTO)
FROM ENC_FACTURA
GROUP BY CED_CLIENTE
Es

importante no confundir el Group By del Order By, ya que uno es para


agrupar el otro para ordenar.

SELECT MARCA, COUNT(DESCRIPCION)


FROM ARTICULO
GROUP BY MARCA
ORDER BY MARCA
5

Uso del GROUP BY


Se

pueden usar varios campos y varias funciones.

SELECT MARCA, MIN(PRECIO) AS MAXIMO ,MAX(PRECIO) AS MINIMO


FROM ARTICULO
GROUP BY MARCA

Uso del HAVING


El

HAVING es una instruccin similar al WHERE solo que nos sirve para
condicionar datos dentro de una agrupacin.

diferencia de WHERE en el HAVING se pueden usar funciones de


agrupamiento.

SELECT MARCA, MIN(PRECIO)


FROM ARTICULO
GROUP BY MARCA
HAVING COUNT(MARCA)>1
7

Ejercicios
1.

Realizar un SELECT que muestre el cdigo de


articulo y una suma con la cantidad de unidades
que se han vendido.

2.

Realizar un SELECT que muestre la marca y el


promedio de precio, de los artculos donde la
marca tenga mas de un producto en el catlogo.
8

Resolucin
1.
SELECT COD_ARTICULO,SUM(CANTIDAD) AS 'TOTAL VENDIDO'
FROM DET_FACTURA
GROUP BY COD_ARTICULO
2.
SELECT MARCA, AVG(PRECIO) AS 'PROMEDIO PRECIO'
FROM ARTICULO
GROUP BY MARCA
HAVING COUNT( MARCA ) > 1
9

Dudas

10

JOIN
La

sentencia JOIN en SQL permite combinar registros de dos o ms


tablas en una base de datos relacional.

En

un JOIN lo ideal es siempre hacer la relaciones por las llaves


forneas entre las tablas.

11

INNER JOIN
Con

el INNER JOIN slo se muestran los registros que


coinciden entre dos tablas A y B.

Sintaxis:

SELECT campo1, campo2, campo3


FROM TablaA
INNER JOIN TablaB
ON TablaA.campo = TablaB.campo
12

INNER JOIN
Ejemplo:

SELECT DET_FACTURA.NUM_FACTURA, DET_FACTURA.CANTIDAD,


ARTICULO.DESCRIPCION, ARTICULO.MARCA
FROM DET_FACTURA
INNER JOIN ARTICULO
ON DET_FACTURA.COD_ARTICULO=ARTICULO.CODIGO

13

ALIAS DE TABLAS
El

uso de alias en las tablas se usa para hacer mas sencillo el manejo de
relaciones entre tablas. Y se realiza poniendo un nombre a la par de la tabla (de
la misma manera que con los alias de los campos).

Ejemplo:

SELECT A.NUM_FACTURA, A.CANTIDAD, B.DESCRIPCION, B.MARCA


FROM DET_FACTURA A
INNER JOIN ARTICULO AS B
ON A.COD_ARTICULO=B.CODIGO
14

INNER JOIN
El

caso del INNER JOIN es en el nico donde ponemos omitir el tipo de JOIN que se est haciendo, en
este caso omitiendo la palabra INNER.

SELECT A.NUM_FACTURA, A.CANTIDAD, B.DESCRIPCION, B.MARCA


FROM DET_FACTURA A
INNER JOIN ARTICULO B
ON A.COD_ARTICULO=B.CODIGO

SELECT A.NUM_FACTURA, A.CANTIDAD, B.DESCRIPCION, B.MARCA


FROM DET_FACTURA A
JOIN ARTICULO B
ON A.COD_ARTICULO=B.CODIGO
15

FULL JOIN
Muestra

el conjunto de todos los registros en las tablas A y B, con


registros coincidentes en ambos lados cuando sea posible. Si no
hay coincidencia, el lado que falta contendr null.

Sintaxis:

SELECT campo1, campo2, campo3


FROM TablaA
FULL JOIN TablaB
ON TablaA.campo = TablaB.campo
16

FULL JOIN
Ejemplo:

SELECT A.NUM_FACTURA, A.CANTIDAD, B.DESCRIPCION, B.MARCA


FROM DET_FACTURA A
FULL JOIN ARTICULO B
ON A.COD_ARTICULO=B.CODIGO

17

LEFT JOIN
Muestra

el conjunto completo de registros de la tabla A, con los


registros coincidentes (si estn disponibles) en la tabla B. Si no hay
coincidencia, el lado derecho contendr null.

Sintaxis:

SELECT campo1, campo2, campo3


FROM TablaA
LEFT JOIN TablaB
ON TablaA.campo = TablaB.campo
18

LEFT JOIN
Ejemplo:

SELECT A.NOMBRE, A.APELLIDO1, A.APELLIDO2,B.NUMERO,


B.MONTO
FROM CLIENTE A
LEFT JOIN ENC_FACTURA B
ON A.CEDULA = B.CED_CLIENTE

19

JOIN con mas de una tabla


Sintaxis:

SELECT campo1, campo2, campo3


FROM TablaA
[INNER, LEFT, FULL] JOIN TablaB
ON TablaA.campo = TablaB.campo
[INNER, LEFT, FULL] JOIN TablaC
ON TablaA.campo = TablaC.campo
20

Funcin ISNULL
La

funcin ISNULL lo que nos permite es asignar un valor en especifico a


un campo que almacena un valor NULO.

Sintaxis:

SELECT ISNULL(CAMPO, VALOR_X_DEFECTO)


FROM TABLA

21

Funcin ISNULL
Ejemplo:
SELECT

A.CEDULA, A.NOMBRE, A.APELLIDO1, SUM(ISNULL(B.MONTO,0))

FROM CAJERO A
LEFT JOIN ENC_FACTURA B
ON A.CEDULA=B.CED_CAJERO
GROUP BY A.CEDULA, A.NOMBRE, A.APELLIDO2
22

Dudas

23

Ejercicio #1
Realice

un SELECT utilizando un JOIN entre las tablas DET_FACTURA


y ARTICULO, para mostrar el siguiente resultado:

24

Resolucin
SELECT
A.NUM_FACTURA,
A.LINEA, A.CANTIDAD,
A.PRECIO_UNITARIO,
B.MARCA,
B.DESCRIPCION
FROM DET_FACTURA A
INNER JOIN ARTICULO B
ON A.COD_ARTICULO=B.CODIGO
25

Ejercicio #2
Realice

un SELECT utilizando un JOIN entre las tablas ARTICULO y


DET_FACTURA, para mostrar la marca, la descripcin y la suma de
artculos facturados, independientemente si se ha vendido o no:

26

Resolucin
SELECT A.MARCA, A.DESCRIPCION, SUM(B.CANTIDAD)
FROM ARTICULO A
LEFT JOIN DET_FACTURA B
ON A.CODIGO=B.COD_ARTICULO
GROUP BY A.MARCA, A.DESCRIPCION

27

Ejercicio #3
Realice

un SELECT utilizando un JOIN para mostrar el nombre del


cliente concatenado, y la cuenta de facturas que tiene asociadas.
Pero solamente de los clientes que tengan al menos una factura y
que el correo del cliente est en NULO.

28

Resolucin

29

Vamos bien?

30

Ejercicio #4
Realice

un SELECT utilizando JOINs para mostrar el nombre


concatenado del cliente, las iniciales del cajero, el numero de
factura, la fecha de la factura, el numero de lnea del detalle de la
factura, la marca del articulo, la descripcin del artculo, la
cantidad y el precio unitario con que se factur. Y que el monto
total de la factura est entre 400,000 y 500,000.

31

Resolucin

32

También podría gustarte