bases de datos funciones de agrupamiento y join de tablas 1
TRANSCRIPT
![Page 1: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/1.jpg)
1
BASES DE DATOSFunciones de agrupamiento y JOIN de Tablas
![Page 2: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/2.jpg)
2
Agenda
•Funciones de agrupamiento.•Uso del GROUP BY.•Teoría del uso de JOIN.•SELECT con JOIN de tablas.
![Page 3: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/3.jpg)
3
Funciones de Agrupación
• MAX SELECT MAX(PRECIO) FROM ARTICULO
• MINSELECT MIN(PRECIO) FROM ARTICULO
• SUM
SELECT SUM(PRECIO) FROM ARTICULO
• COUNTSELECT COUNT(*) FROM ARTICULO
• AVGSELECT AVG(PRECIO) FROM ARTICULO
![Page 4: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/4.jpg)
4
Uso del GROUP BY
•El uso de GROUP BY sirve hacer agrupaciones de datos dentro de una instrucción SELECT.
Sintaxis:
SELECT CAMPO1, CAMPO2, FUNCION(CAMPO3)
FROM NOMBRETABLA
GROUP BY CAMPO1, CAMPO2;
![Page 5: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/5.jpg)
5
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
![Page 6: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/6.jpg)
6
• 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 GROUP BY
![Page 7: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/7.jpg)
7
Uso del HAVING
• El HAVING es una instrucción similar al WHERE solo que nos sirve para condicionar datos dentro de una agrupación.
• A 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
![Page 8: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/8.jpg)
8
Ejercicios
1. Realizar un SELECT que muestre el código 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 artículos donde la marca tenga mas de un producto en el catálogo.
![Page 9: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/9.jpg)
9
Resolución1.
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
![Page 10: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/10.jpg)
10
Dudas
![Page 11: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/11.jpg)
11
JOIN• La sentencia JOIN en SQL permite combinar registros de dos o más
tablas en una base de datos relacional.
• En un JOIN lo ideal es siempre hacer la relaciones por las llaves foráneas entre las tablas.
![Page 12: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/12.jpg)
12
INNER JOIN
•Con el INNER JOIN sólo 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
![Page 13: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/13.jpg)
13
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
![Page 14: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/14.jpg)
14
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
![Page 15: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/15.jpg)
15
• 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
INNER JOIN
![Page 16: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/16.jpg)
16
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
![Page 17: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/17.jpg)
17
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
FULL JOIN
![Page 18: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/18.jpg)
18
LEFT JOIN
• Muestra el conjunto completo de registros de la tabla A, con los registros coincidentes (si están 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
![Page 19: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/19.jpg)
19
• 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
LEFT JOIN
![Page 20: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/20.jpg)
20
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
![Page 21: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/21.jpg)
21
Función ISNULL
• La función 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
![Page 22: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/22.jpg)
22
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
Función ISNULL
![Page 23: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/23.jpg)
23
Dudas
![Page 24: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/24.jpg)
24
Ejercicio #1
• Realice un SELECT utilizando un JOIN entre las tablas DET_FACTURA y ARTICULO, para mostrar el siguiente resultado:
![Page 25: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/25.jpg)
25
ResoluciónSELECT
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
![Page 26: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/26.jpg)
26
Ejercicio #2• Realice un SELECT utilizando un JOIN entre las tablas ARTICULO y
DET_FACTURA, para mostrar la marca, la descripción y la suma de artículos facturados, independientemente si se ha vendido o no:
![Page 27: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/27.jpg)
27
Resolución
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
![Page 28: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/28.jpg)
28
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.
![Page 29: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/29.jpg)
29
Resolución
![Page 30: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/30.jpg)
30
¿Vamos bien?
![Page 31: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/31.jpg)
31
Ejercicio #4• Realice un SELECT utilizando JOIN’s para mostrar el nombre
concatenado del cliente, las iniciales del cajero, el numero de factura, la fecha de la factura, el numero de línea del detalle de la factura, la marca del articulo, la descripción del artículo, 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.
![Page 32: BASES DE DATOS Funciones de agrupamiento y JOIN de Tablas 1](https://reader036.vdocuments.site/reader036/viewer/2022062515/5665b4da1a28abb57c944031/html5/thumbnails/32.jpg)
32
Resolución