You are on page 1of 2

EXAMEN FINAL

CREATE FUNCTION PREGUNTA1 (@CODIGOCLIENTE INT)


RETURNS TABLE
AS
RETURN
select SO.custid, YEAR (SO.orderdate) AS AÑO,
ROW_NUMBER () OVER (PARTITION BY SO.CUSTID ORDER BY SO.ORDERDATE DESC) AS
[CONTEO_ORD],
(SOD.unitprice * SOD.qty) - SOD.discount AS 'SUMA_VENTA TOTAL'
from sales.Orders as SO
INNER JOIN Sales.OrderDetails as SOD
ON SO.orderid = SOD.orderid
WHERE SO.custid=(@CODIGOCLIENTE)
GO

SELECT *
FROM PREGUNTA1 (85)
GO

OTHER
CREATE FUNCTION EF_PREGUNTA1 (@CODIGOCLIENTE INT)
RETURNS TABLE
AS
RETURN
select SO.custid, YEAR (SO.orderdate) AS AÑO,
COUNT(SO.custid) [CONTEO_ORD],
CAST (SUM((SOD.unitprice * SOD.qty) - SOD.discount) AS DECIMAL (10,2)) AS
'SUMA_VENTA TOTAL'
from sales.Orders as SO
INNER JOIN Sales.OrderDetails as SOD
ON SO.orderid = SOD.orderid
WHERE SO.custid=@CODIGOCLIENTE
GROUP BY SO.custid, YEAR (SO.orderdate)
GO

SELECT *
FROM EF_PREGUNTA1 (87)
GO

2.

WITH CTE_PREGUNTA2 AS
(SELECT YEAR(orderdate) AS año_orden ,
custid AS Cod_Cliente
FROM Sales.Orders)
SELECT año_orden, COUNT(DISTINCT Cod_Cliente) AS cant_clientes
FROM CTE_PREGUNTA2
GROUP BY año_orden
HAVING COUNT(DISTINCT Cod_Cliente) > 70
GO

3.

alter PROCEDURE SP_PREGUNTA3 (@PAIS varchar (8))


AS
BEGIN
SELECT SO.orderid,
SO.orderdate,
SO.custid,
SC.contactname
FROM Sales.Orders AS SO
INNER JOIN Sales.Customers AS SC
ON SO.custid = SC.custid
WHERE SC.country like @PAIS
ORDER BY 2
END
GO

exec SP_PREGUNTA3 'b%'


go

4.
select categoryid,
count(productname) as [contador de productos]
from (select categoryid, productname
from Production.Products) as pregunta_4
group by categoryid
having count(productname)>12
go

You might also like