Kolokwium 2b rozwiązane.doc

(14 KB) Pobierz

Utwórz tabelę zespoły uwzględniając założenia a-g i określając odpowiednie typu kolumn.

CERATE TABLE Zespoly(
Nr_Zespolu INT IDENTITY PRIMARY KEY ,
Nazwa_Zespolu VARCHAR(10) NOT NULL,
Specjalizacja VARCHAR(20) NULL,
Data_powolania DATE NOT NULL,
Budzet INT NOT NULL,
Kierownik VARCHAR(10) FOREIGN KEY REFERENCES Pracownicy,
Nr_dzialu INT FOREIGN KEY REFERENCES Dzialy)

Dodaj nową kolumnę Data_powstania w tabeli Działy o wymaganych wartościach.

ALTER TABLE Dzialy
ADD Data_powstania DATE NOT NULL

AFTER Lokalizacja

Wprowadź do tabeli Pracownicy ograniczenie: Zarobki nie mogą być niższe 1000 i wyższe 5000.

ALTER TABLE Pracownicy
ADD CONSTRAINT chk_zarobki
CHECK (Zarobki BETWEEN 1000 AND 5000)

Wprowadź dane dwóch nowych pracowników.

INSERT INTO Pracownicy(Imie, Nazwisko, Stanowisko, Premia, Zarobki, Data_zatrudnienia, Nr_zespolu)
VALUES('snndkk', 'dvdsv', hkbjbv', 100, 4000, 25.08.2012, 4),
('snbbbk', 'dvdff', qdebv', 120, 2000, 06.08.2012, 3)

Wypisz dane osobowe, stanowiska i zarobki osób które otrzymują wynagrodzenie mniejsze niż 1500. Uporządkuj wg stanowiska w drugiej kolejności zarobków trzeciej nazwisk.

SELECT Imie, Nazwisko, Stanowisko, Zarobki FROM Pracownicy
WHERE (Zarobki + Premia < 1500)
ORDER BY Stanowisko, Zarobki, Nazwisko DESC
Wypisz dane działów z minimalnym średnim budżetem zespołu podając także tę kwotę.

SELECT Dzialy.Nr_dzialu, Dzialy.Nazwa, Dzialy.Lokalizacja, Dzialy.Szef_dzialu, AVG(Zespoly.Budzet) FROM Dzialy LEFT JOIN Zespoly
ON Dzialy.Nr_zespolu = Zespoly.Nr_dzialu WHERE Zespoly.Budzet = MIN(AVG(Zespoly.Budzet)) GROUP BY Dzialy.Nr_dzialu

Utwórz procedurę która podwyższa o zadaną parametrycznie wartość procentową budżet wszystkich zespołów należących do działu którego nazwa jest zadana parametrycznie. Podaj przykładowe wywołanie

CERATE PROCEDURE ZWIEKSZ_BUDZET
@ wartosc_proc INT,
@ nazwa_dzialu VARCHAR(20)
AS
BEGIN
   DECLARE @id INT
   SELECT @id = Dzialy.Nr_dzialu FROM Dzialy
   WHERE Dzialy.Nazwa = @ nazwa_dzialu
   IF @id IS NOT NULL
   BEGIN
      UPDATE Zespoly SET Budzet = Budzet (1 + @wartosc_proc/100)
      WHERE Zespoly.Nr_zespolu = @id
      PRINT 'Zwiekszono budzet'
   END
   ELSE
      PRINT 'Nie zwiekszono budzetu'
END

PROCEDURE ZWIEKSZ_BUDZET
(15, 'IT')

Zgłoś jeśli naruszono regulamin