Consult As
Transcript of Consult As
”UNIVERSIDAD NACIONAL “DANIEL ALCIDES CARRIÓN”
FACULTAD DE INGENERIA
ESCUELA DE SISTEMAS Y COMPUTACIÓN - VIII SEMESTRE
SISTEMAS DE BASES IITEMA:
CONSULTAS DE FUNCIONES AGREGADAS EN SQL
DOCENTE:
Ing. MUÑOZ ROBLES, Williams Antonio
ALUMNA:
PALMA CRISTOBAL, Tania
CERRO DE PASCO – 2016
CONSULTAS DE FUNCIONES AGREGADAS EN SQL SERVER
BASE DE DATOS VENTAS
Sistemas de Bases II Página 2
CREANDO LAS TABLAS CREANDO LA TABLA CLIENTE
CREATE TABLE CLIENTE (ID_CLIENTE VARCHAR (5),NOMBRE_CLIENTE VARCHAR 50),EDAD_CLIENTE INT,PRIMARY KEY (ID_CLIENTE))
CREANDO LA TABLA FACTURACREATE TABLE FACTURA (SERFAC VARCHAR (5),NROFAC VARCHAR 5),FECHFAC DATETIME,ID_CLIENTE VARCHAR (5),PRIMARY KEY (SERFAC, NROFAC),FOREIGN KEY (ID_CLIENTE) REFERENCES CLIENTE (ID_CLIENTE) ON DELETE CASCADE)
CREANDO LA TABLA PRODUCTOCREATE TABLE PRODUCTO (ID_PROD VARCHAR (5),NOMBRE_PROD VARCHAR (50),PRECIO_PROD NUMERIC (10,2),CANTIDAD_PROD INTPRIMARY KEY (ID_PROD))
CREANDO LA TABLA DFACTURACREATE TABLE DFACTURA (SERFAC VARCHAR (5),NROFAC VARCHAR (5),ID_PROD VARCHAR (5),CANTIDAD INT,SUBTOTAL NUMERIC (10,2)PRIMARY KEY (SERFAC, NROFAC, ID_PROD),FOREIGN KEY (SERFAC, NROFAC) REFERENCES FACTURA (SERFAC, NROFAC) ON DELETE CASCADE,FOREIGN KEY (ID_PROD) REFERENCES PRODUCTO (ID_PROD) ON DELETE CASCADE,)
ALMACENANDO DATOS A LAS TABLASSistemas de Bases II Página 3
DATOS DE LA TABLA CLIENTE
INSERT INTO CLIENTEVALUES ('CL002','PEDRO',35), ('CL003','JUAN',40), ('CL004','KARINA',18), ('CL005','JUANA',22), ('CL006','VANESA',47)
DATOS DE LA TABLA PRODUCTO
INSERT INTO PRODUCTO VALUES('PD001','YOGURT',5.20,20),('PD002','GASEOSA',3.5,24),('PD003','GALLETAS',1.5,40),('PD004','FIDEOS',1.2,35),('PD005','LECHE',3.20,48)
DATOS DE LA TABLA FACTURA
INSERT INTO FACTURA VALUES('1','100','23-04-2014','CL003'),('2','101','21-05-2014','CL002'),('3','102','18-06-2014','CL001'),('4','103','12-07-2014','CL004'),('5','104','13-07-2014','CL001'),('6','105','14-08-2014','CL003')
INSERT INTO FACTURAVALUES ('7','106','13-05-2015','CL002'), ('8','107','17-06-2015','CL001'), ('9','108','23-6-2015','CL004')
DATOS DE LA TABLA DFACTURA
INSERT INTO DFACTURA VALUES('1','100','PD002',5,18),('2','101','PD001',2,10.4),('3','102','PD003',4,6),('4','103','PD004',3,3.6),('5','104','PD005',3,9.6),('6','105','PD003',5, 7.5)
INSERT INTO DFACTURAVALUES ('1','100','PD004',10, 12)
INSERT INTO DFACTURAVALUES ('5','104','PD004',1, 1.2), ('8','107','PD001',2, 10.4)
CONSULTAS DE FUNCIONES AGREGADAS
Sistemas de Bases II Página 4
1) AVG: Devuelve el promedio de los valores de un grupo. Los valores NULL se pasan por alto.
AVG ([ALL | DISTINCT] expresión)
SELECT AVG (CANTIDAD_PROD) AS PROMEDIO_CANTIDAD_PRODUCTOFROM PRODUCTO
SELECT AVG (PRECIO_PROD) AS PROMEDIO_PRECIOSFROM PRODUCTO
SELECT AVG (SUBTOTAL) AS [PROMEDIO TOTAL]FROM DFACTURA
2) COUNT: Devuelve el número de elementos de un grupo.
COUNT ({[[ALL | DISTINCT] expresión] | *})
-- CONTAR EL NUMERO DE PRODUCTOS
SELECT CLIENTE.ID_CLIENTE, NOMBRE_CLIENTE, COUNT (CANTIDAD) AS PRODUCTOSFROM FACTURA INNER JOIN CLIENTE ON FACTURA.ID_CLIENTE=CLIENTE.ID_CLIENTE INNER JOIN DFACTURA ON FACTURA.SERFAC=DFACTURA.SERFAC AND FACTURA.NROFAC=DFACTURA.NROFACGROUP BY CLIENTE.ID_CLIENTE, NOMBRE_CLIENTE
Sistemas de Bases II Página 5
--CANTIDAD DE FACTURAS EMITIDAS
SELECT DISTINCT COUNT (NROFAC) AS CANTIDAD_FACTURAS_EMITIDASFROM FACTURA
---CONTAR LA CANTIDAD DE CLIENTES
SELECT COUNT (ID_CLIENTE) AS [TOTAL_CLIENTES]FROM CLIENTE
---CONTAR EL NUMERO DE PRODUCTOS VENDIDOS
SELECT PRODUCTO.ID_PROD, NOMBRE_PROD, COUNT (CANTIDAD) AS PRODUCTOSFROM DFACTURA INNER JOIN PRODUCTO ON DFACTURA.ID_PROD=PRODUCTO.ID_PROD GROUP BY PRODUCTO.ID_PROD, NOMBRE_PROD
--TOTAL DE REGISTROS DE LAS TABLAS DESDE UNA MISMA CONSULTA
SELECT 'CLIENTE' AS [TABLA], COUNT (ID_CLIENTE)
Sistemas de Bases II Página 6
AS [TOTAL REGISTROS] FROM CLIENTEUNIONSELECT 'PRODUCTO' AS [TABLA], COUNT (ID_PROD)AS [TOTAL REGISTROS] FROM PRODUCTOUNIONSELECT 'FACTURA' AS [TABLA], COUNT (SERFAC)AS [TOTAL REGISTROS] FROM FACTURAGO
3) MAX: Devuelve el valor máximo de la expresión
MAX ([ALL | DISTINCT] expresión)
SELECT MAX (EDAD_CLIENTE) AS EDAD_MAXIMAFROM CLIENTE
---MONTO MA SALTO Y MONTO MAS BAJO
SELECT MAX (SUBTOTAL) AS [MONTO MAYOR], MIN (SUBTOTAL) AS [MONTO MENOR]FROM DFACTURA
--- MONTO MA SALTO Y MONTO MAS BAJO POR AÑO
SELECT YEAR (FECHFAC) AS [AÑO], MAX (SUBTOTAL) AS [MONTO MAYOR],MIN (SUBTOTAL) AS [MONTO MENOR]FROM FACTURA, DFACTURAWHERE YEAR (FECHFAC)='2015'GROUP BY YEAR (FECHFAC)ORDER BY YEAR (FECHFAC) DESC
Sistemas de Bases II Página 7
4) MIN: Devuelve el valor mínimo de la expresión
MIM ([ALL | DISTINCT] expresión)
SELECT MIN (EDAD_CLIENTE) AS EDAD_MAXIMAFROM CLIENTE
--SELECCIONAR EL PRODUCTO CUYO VALOR SEA MENOR 3.50
SELECT NOMBRE_PROD, MIN (PRECIO_PROD) AS [PRECIO]FROM PRODUCTOGROUP BY NOMBRE_PRODHAVING MIN (PRECIO_PROD) <3.50;
--SELECCIONAR EL PRODUCTO CUYO VALOR SEA MAYOR 3.00
SELECT NOMBRE_PROD, MIN (PRECIO_PROD) AS [PRECIO]FROM PRODUCTOGROUP BY NOMBRE_PRODHAVING MIN (PRECIO_PROD) >3.00;
Sistemas de Bases II Página 8
5) STEV: Devuelve la desviación típica estadística de todos los valores de la expresión especificada
STDEV ([ALL | DISTINCT] expresión)
---DETERMINAR LA DESVIACION ESTANDAR DEL PRODUCTO
SELECT STDEV (PRECIO_PROD) AS [DESVIACION ESTANDAR]FROM PRODUCTO
6) SUM: Devuelve la suma de todos los valores o sólo de los valores DISTINCT de la expresión
SELECT SUM (CANTIDAD_PROD) AS CANTIDAD_STOCKFROM PRODUCTO
--SACAR EL TOTAL DE UNA FACTURA ESPECIFICADA
SELECT SERFAC, NROFAC, SUM (SUBTOTAL) AS TOTAL_FACTURAFROM DFACTURA INNER JOIN PRODUCTO ON DFACTURA.ID_PROD=PRODUCTO.ID_PRODWHERE SERFAC='1' AND NROFAC='100'GROUP BY SERFAC, NROFAC
--SACAR EL TOTAL DE TODAS LAS FACTURAS
SELECT SERFAC, NROFAC, SUM (SUBTOTAL) AS TOTAL_FACTURAFROM DFACTURA INNER JOIN PRODUCTO ON DFACTURA.ID_PROD=PRODUCTO.ID_PRODGROUP BY SERFAC, NROFAC
Sistemas de Bases II Página 9
---SUMA EL TOTAL DE PRODUCTOS
SELECT CLIENTE.ID_CLIENTE, NOMBRE_CLIENTE, SUM (CANTIDAD) AS CANTIDAD_PRODUCTOFROM FACTURA INNER JOIN CLIENTE ON FACTURA.ID_CLIENTE=CLIENTE.ID_CLIENTE INNER JOIN DFACTURA ON FACTURA.SERFAC=DFACTURA.SERFAC AND FACTURA.NROFAC=DFACTURA.NROFACGROUP BY CLIENTE.ID_CLIENTE, NOMBRE_CLIENTE
---SUMA TOTAL POR CADA AÑO
SELECT DISTINCT YEAR (FECHFAC) AS [AÑO], SUM (SUBTOTAL) AS [TOTAL_ACUMULADO]FROM FACTURA, DFACTURAGROUP BY YEAR (FECHFAC)
---SUMA TOTAL POR CADA MES
SELECT DISTINCT MONTH (FECHFAC) AS [MES],SUM (SUBTOTAL) AS [TOTAL_ACUMULADO]FROM FACTURA, DFACTURAGROUP BY MONTH (FECHFAC)
Sistemas de Bases II Página 10
--- ESTABLECER EL VALOR TOTAL DE STOCK
SELECT SUM (CANTIDAD_PROD*PRECIO_PROD) AS [TOTAL STOCK]FROM PRODUCTO
7) CON CLAUSULA DISTINCT
SELECT DISTINCT SERFACFROM DFACTURA
8) CON CLUSULA TOP
--DEVUELVE LOS 2 MEJORES PRODUCTOS EN CUANTO A PRECIO_PROD
SELECT TOP 2 ID_PROD, NOMBRE_PROD, PRECIO_PRODFROM PRODUCTOORDER BY PRECIO_PROD DESC;
Sistemas de Bases II Página 11
---DEVUELVE LOS 3 PEORES PRODUCTOS EN CUANTO A PRECIO
SELECT TOP 3 WITH TIES ID_PROD, NOMBRE_PROD, PRECIO_PRODFROM PRODUCTOWHERE PRECIO_PROD IS NOT NULLORDER BY PRECIO_PROD;
Sistemas de Bases II Página 12