Sie sind auf Seite 1von 6

TEME SEMINARII SGBD

--SEMINAR 3
--cerinta 1
CREATE TABLE ProdusePerisabile (CodProdus int PRIMARY KEY, Denumire nvarchar(50), DataExpirare DATE,
UnitateMasura nvarchar(10), Pret MONEY)

--cerinta 2
CREATE TABLE Gestiune (CodGestiune int PRIMARY KEY, DenumireGestiune nvarchar(15))

--cerinta 3
CREATE TABLE BonConsum (NrBonConsum int PRIMARY KEY, DataBonConsum DATE, CodGestiune INT)

ALTER TABLE BonConsum ADD CONSTRAINT FK_CodProdus FOREIGN KEY (CodProdus) REFERENCES Produs(CodProdus)

--cerinta 4
CREATE TABLE ContinutBonConsum (IdBonConsum int Primary key, NrBonConsum int, CodProdus int, Cantitate MONEY ,
PRET MONEY)
ALTER TABLE ContinutBonConsum ADD CONSTRAINT FK_NrBonConsum FOREIGN KEY(NrBonConsum) REFERENCES
BonConsum(NrBonConsum)

ALTER TABLE ContinutBonConsum ADD CONSTRAINT FK_CodProdus FOREIGN KEY(CodProdus) REFERENCES
ProdusePerisabile(CodProdus)

--cerinta 5
ALTER TABLE ProdusePerisabile ADD CONSTRAINT CPret CHECK (Pret>1000)

--cerinta 6
ALTER TABLE ContinutBonConsum ADD CONSTRAINT CCantitate CHECK (Cantitate>100)

--cerinta 7
ALTER TABLE ContinutBonConsum ADD CONSTRAINT CPret CHECK (Pret>0)

--SEMINAR 4
--cerinta 1
INSERT INTO ProdusePerisabile VALUES (1,Lapte Praf,GETDATE(),Kg,7)
INSERT INTO ProdusePerisabile VALUES (2,Ladite,1/1/2010,Buc,10)
INSERT INTO ProdusePerisabile VALUES (3,Zahar,GETDATE()+2,Kg,3)
INSERT INTO ProdusePerisabile VALUES (4,Cafea,1/1/2011,NULL,25)

--cerinta 2
INSERT INTO Gestiune
SELECT * FROM Gestiune$
WHERE NOT CodGestiune IS NULL

--cerinta 3
INSERT INTO BonConsum VALUES (1,GETDATE(),1)
INSERT INTO BonConsum VALUES (2,GETDATE()+3,2)
INSERT INTO BonConsum VALUES (3,GETDATE()+5,2)

--cerinta 4
INSERT INTO ContinutBonConsum VALUES(1,1,1,11.25,14)
INSERT INTO ContinutBonConsum VALUES(2,1,2,11,11.20)
INSERT INTO ContinutBonConsum VALUES (3,2,1,10.23,11)
INSERT INTO ContinutBonConsum VALUES (4,2,2,18.02.10.20)

--cerinta 5
SELECT *, CONVERT (CHAR(10),DataBonConsum,103) AS Data,
DATEDIFF(Day,DataBonConsum,GETDATE()) AS NrZile,
DATEDIFF(Month,DataBonConsum,GETDATE()) AS NrLuni,
DATEDIFF(Year,DataBonConsum,GETDATE()) AS Ani
FROM BonConsum
WHERE YEAR(DataBonConsum)=Year(GETDATE())

--cerinta 6
SELECT Denumire,UPPER(Denumire,LEN(Denumire)
From ProdusePerisabile
WHERE Date(GETDATE()>Date(DataExpirare)

--cerinta 7
CREATE TABLE #TotalP(NrComanda int,ValPlatita MONEY)

--cerinta 8
INSERT INTO #TotalP
SELECT IdBonConsum,SUM(Cantitate*Pret) AS Valoare
FROM ContinutBonConsum
GROUP BY IdBonConsum

--cerinta 9
SELECT

--SEMINAR 5
--cerinta 1
SELECT *,Cantitate*Pret AS Valoare
CASE
WHEN Cantitate*Pret>=500 THEN 0.5*(Cantitate*Pret)
ELSE 0
END AS Reducere
FROM ContinutBonConsum

--cerinta 2
SELECT *
FROM ProdusePerisabile
ORDER BY Denumire
COMPUTE SUM(Cantitate*Pret)

--cerinta 3
SELECT COUNT(UnitateMasura),COUNT(DISTINCT UnitateMasura),Count(*)
FROM ProdusePerisabile

--cerinta 4
SELECT *
FROM ProdusePerisabile
ORDER BY UnitateMasura
COMPUTE COUNT(CodProdus) By (UnitateMasura)

--cerinta 5
SELECT CodProdus, Pret
ROW_NUMBER () OVER (ORDER BY Pret DESC) AS NrOrdine,
RANK () OVER (ORDER BY Pret DESC) AS Rang,
NTILE(2) OVER (ORDER BY Pret DESC) AS Grupa
FROM ProdusePerisabile
ORDER BY Pret DESC

SEMINAR 6
--cerinta 1
CREATE VIEW ViewT1
AS
SELECT DISTINCT Departament
FROM Colaborator

--cerinta 2
CREATE VIEW View T2
AS
SELECT Cod, Salariu
FROM Colaborator
WHERE Salariu=Salariu/4.5

--cerinta 3
CREATE VIEW ViewT3
AS
SELEC T DATEDIFF(Year,Data_Nasterii,GETDATE()) AS Varsta
FROM Colaborator

ALTER ViewT3 ADD COLUMN
CASE WHEN DATEDIFF(Year,Data_Nasterii,GETDATE())>40
THEN 0.20
WHEN DATEDIFF(Year,Data_Nasterii,GETDATE()) BETWEEN 30 AND 40
THEN 0.10
ELSE 0.05
END AS SporVechime
FROM Colaborator

--cerinta 4
CREATE VIEW ViewT4
AS
SELECT Domiciliu,DATEDIFF(YEAR,DataInceput,DataSfarsit) AS Vechime
FROM Colaborator
WHERE Domiciliu=B*
HAVING DATEDIFF(YEAR,DataInceput,DataSfarsit)>3

--cerinta 5
CREATE VIEW ViewT5
AS
SELECT Departament,SUM(Salarii) AS SalariiTotale
FROM Colaborator
GROUP BY Departament
ORDER BY SUM(Salarii) DESC;

--cerinta 6
CREATE VIEW ViewT6
AS
SELECT *,AVG(DATEDIFF(year,Data_Nasterii,GETDATE())) AS VarstaMedie
FROM Colaboratori
ORDER BY Departament
HAVING YEAR(DATEDIFF(year,Data_Nasterii,GETDATE()))>1970

--cerinta 7
CREATE VIEW ViewT7
AS
SELECT Salariu,Nume
FROM Colaborator
GROUP BY Salariu DESC,Nume ASC
HAVING Salariu>500
ORDER BY Salariu DESC,Nume ASC;

--cerinta 8
DELETE Colaborator
WHERE DATEDIFF(Year,Data_Nasterii,GETDATE())>50;

--cerinta 9
DELETE Colaborator
OUTPUT DELETED.*
WHERE Departament=Logistica

--cerinta 10
CREATE TABLE ArhivaColaboratori(Cod int,Nume nvarchar(50),Departament nvarchar(50))

DELETE Colaborator
OUTPUT DELETED.Cod,DELETED.Nume,DELETED.Departament
INTO ArhivaColaboratori
WHERE Departament=Controlling;

SEMINAR 7
--cerinta 1
UPDATE Colaborator
SET Salariu=Salariu*1.25
WHERE Departament=Contabilitate

--cerinta 2
UPDATE Colaborator
SET Domiciliu=Bucuresti
DataSfarsit=DATEADD(MONTH,3,DataSfarsit)
WHERE Departament=Bucuresti

--cerinta 3
UPDATE ContinutComanda
SET Pret=Pret*0.15
WHERE CodProdus IN
(SELECT CodProdus,Pret
FROM Produs INNER JOIN ContinutComanda ON Produs.CodProdus=ContinutComanda.CodProdus
INNER JOIN Comanda ON Comanda.NrComanda=ContinutComanda.NrComanda
WHERE NrComanda NOT IN (SELECT NrComanda FROM Comanda)
AND Categorie=Alimentare
AND YEAR(DataComanda)=2012)

--cerinta 4
CREATE PROCEDURE Pr4Tema
AS
SELECT Produs.CodProdus,Produs.DenumireProdus,SUM(Cantitate*Pret) AS ValoareTotala
FROM Produs INNER JOIN ContinutComanda ON Produs.CodProdus=ContinutComanda.CodProdus
GROUP BY Produs.CodProdus,Produs.DenumireProdus

--cerinta 5
CREATE PROCEDURE Pr5Tema
@CodProdus INT
AS
SELECT CodProdus,SUM(Cantitate*Pret) AS ValoareTotala
FROM ContinutComanda
GROUP BY CodProdus

--cerinta 6
CREATE PROCEDURE Pr6Tema
AS
CREATE TABLE #ValoareTotala(NrComanda int,ValTotala Money)
CREATE TABLE #ValoarePlatita(NrComanda INT,ValPlatita MONEY)

INSERT INTO #ValoareTotala
SELECT NrComanda,SUM(Cantitate*Pret)
FROM ContinutComanda
GROUP BY NrComanda

INSERT INTO #ValoarePlatita
SELECT NrComanda,SUM(SumaPlatita)
FROM Chitanta
GROUP BY NrComanda

SELECT #ValoareTotala.NrComanda,ValTotala,ValPlatita,
ValTotala-ValPlatita AS Diferenta
FROM #ValoareTotala INNER JOIN #ValoarePlatita ON #ValoareTotala.NrComanda=#ValoarePlatita.NrComanda


SEMINAR 9
--cerinta 1
CREATE FUNCTION Tema_1 (@Data1 DATE, @Data2 DATE)
RETURNS TABLE
AS
RETURN (SELECT Departament,Salariu*0.50 AS JumatateSalariu FROM Colaborator WHERE DataInceput BETWEEN Data1
AND Data2)

SELECT * FROM dbo.Tema_1

--2
CREATE PROCEDURE Pr_tema9
@Data DATE
AS
SELECT Departament,SUM(Salariu/2) AS ValoareTotala
FROM Colaborator
WHERE DataInceput=@Data
GROUP BY Departament

--SEMINAR 10
--cerinta 2
CREATE TRIGGER S10_TEMA2 ON ContinutComanda FOR UPDATE AS
BEGIN
IF EXISTS (SELECT * FROM INSERTED INNER JOIN DELETED ON INSERTED.CodProdus=DELETED.CodProdus
WHERE INSERTED.Pret>DELETED.Pret)

BEGIN
RAISSERROR(Nu se poate face actualizarea,18,2)
ROLLBACK TRANSACTION
END
END

UPDATE ContinutComanda
SET Pret=Pret-1000
FROM ContinutComanda
Where CodProdus=1250

Select * from colaborator
Where codprodus=1250

--cerinta 1

Das könnte Ihnen auch gefallen