Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Aporte] Parcial práctico GDD Edgardo Lacquaniti 1c 2018
Autor Mensaje
fav Sin conexión
Militante
Sin Estado, podría ser el nom...
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 84
Agradecimientos dados: 1
Agradecimientos: 15 en 12 posts
Registro en: Apr 2015
Mensaje: #1
[Aporte] Parcial práctico GDD Edgardo Lacquaniti 1c 2018 Parciales Gestión de Datos
Buenas, les dejo el 1er parcial práctico de gestión de datos de la cursada de Lacquaniti-Moscuzza 1c 2018
Creo que se tomó el 27/6.

Enunciado:

Cita:1. Se pide realizar una consulta sql que retorne por cada año, el cliente que mas compro (fact_total), la canitdad de articulos distintos comprados, la cantidad de rubros distintos comprados.
Solamente se deberan mostras aquellos clientes que posean al menos 10 facturas o mas por año.
El resultado debe ser ordenado por año.
Nota: no se permite el uso de sub-selects en el FROM ni funciones definidas por el usuario para este punto.

2. Implementar el/los objetos necesarios para la siguiente restriccion:
"Toda composicion (ej. COMBO 1) debe estar compuesta solamente por productos simples (EJ: COMBO4 compuesto por: 4 Hamburguesas, 2 gaseosas y 2 papas). No se permitirá que un combo este compuesto por nigun otro combo."
Se sabe que en la actualidad dicha regla se cumple y que la base de datos es accedido por n aplicaciones de diferentes tipos y tecnologías.

Resolución:

1. (Nota 8)

USE [GD2015C1]
GO

SELECT f.fact_cliente, YEAR(f.fact_fecha) as anio, COUNT(DISTINCT i.item_producto) as 'Cant Prod Distintos', COUNT(DISTINCT p.prod_rubro) as 'Rubros Distintos'
FROM
Factura f
JOIN Item_Factura i
ON f.fact_tipo = i.item_tipo and f.fact_sucursal = i.item_sucursal and f.fact_numero = i.item_numero
JOIN Producto p
ON i.item_producto = p.prod_codigo
WHERE f.fact_cliente = (
SELECT TOP 1 f2.fact_cliente
FROM Factura f2
WHERE YEAR(f2.fact_fecha) = YEAR(f.fact_fecha)
GROUP BY f2.fact_cliente
ORDER BY SUM(isnull(f2.fact_total,0)) desc
)
GROUP BY f.fact_cliente, YEAR(f.fact_fecha)
HAVING COUNT(fact_cliente) >= 10
ORDER BY YEAR(f.fact_fecha)


2. (nota 9, faltó chequear la composiciones tipo Combo1,Combo1)



USE [GD2015C1]
GO
CREATE TRIGGER TR_COMPOSICION ON Composicion
AFTER INSERT, UPDATE
AS
BEGIN TRANSACTION
IF(EXISTS(SELECT 1 FROM inserted i WHERE EXISTS(SELECT 1 FROM Composicion c WHERE c.comp_producto = i.comp_componente)))
BEGIN
RAISERROR('Las composiciones deben estar compuestas por productos simples', 1, 1)
ROLLBACK
RETURN
END
COMMIT TRANSACTION
GO



Saludoss.
23-07-2018 11:42
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] fav recibio 1 Gracias por este post
CarooLina (23-07-2018)
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.