Advertisement
MagnusArias

BD | KOLOKWIUM 2

Jun 20th, 2016
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.40 KB | None | 0 0
  1. /* zad 1    ZROBIONE*/
  2. /*
  3. Podaj liczbe ludnosci dla obszaru lodzkiego, uzyj samozłączenia
  4. (Ja podalem dla wszystkich obszarow, czyli polska i 3 województwa, ale zaliczyła to)
  5. */
  6. USE kraj;
  7. SELECT * FROM obszar;
  8.  
  9. SELECT o.nazwaObszaru, SUM(l.ludnosc) FROM obszar l
  10. JOIN obszar o ON l.idObszaruNadrzednego = o.idObszaru
  11. WHERE o.idObszaru = 2
  12. GROUP BY o.nazwaObszaru;
  13.  
  14.  
  15. /* zad 2 */
  16. /*
  17. Utworz transakcje .....
  18. Ogolnie to wystarczy zrobic tak:
  19. */
  20. BEGIN TRANSACTION nazwa
  21. //operacje
  22. commit TRANSACTION nazwa
  23.  
  24.  
  25.  
  26. /* zad 3            ZROBIONE */
  27. /*
  28. Utworzyc sekwencje o nazwia nowa_sekwencja o typie smallint, startującej od 15, zwiększanej co 20 do maksymalnej wartosci 1000, startującej od 15 po przekroczeniu wartości. Utwórz tabelę z polami int oraz łańcuchem znakowym. Wprowadź do tabeli rekord przy użyciu sekwencji
  29. */
  30.  
  31. CREATE SEQUENCE nowa_sekwencja AS SMALLINT
  32. START WITH 15
  33. INCREMENT BY 20
  34. maxvalue 1000
  35. cycle
  36.  
  37. CREATE TABLE tab(
  38.     liczba INT,
  39.     znaki VARCHAR(20)
  40. )
  41.  
  42. INSERT INTO tab VALUES( NEXT VALUE FOR nowa_sekwencja, 'kolumna');
  43. INSERT INTO tab VALUES( NEXT VALUE FOR nowa_sekwencja, 'kolumna 2');
  44.  
  45. SELECT * FROM tab;
  46.  
  47.  
  48. /* zad 4            ZROBIONE */
  49. /*
  50. Stwórz procedurę, pobierającą idTowaru, która zwraca ilosc transakcji tym produktem. Wykonaj polecenie dla idTowaru = 5
  51. */
  52. USE BazaRelacyjna;
  53. CREATE PROCEDURE liczbaTransakcji
  54. @idTowaru INT,
  55. @liczba INT OUTPUT
  56. AS
  57.     SELECT @liczba = COUNT(idTransakcji) FROM Transakcje
  58.     WHERE idTowaru = @idTowaru;
  59. GO
  60.  
  61. DECLARE @wynik INT;
  62. EXEC liczbaTransakcji 5, @wynik OUTPUT;
  63. print @wynik;
  64.  
  65.  
  66. /* zad 5        ZROBIONE*/
  67. /*
  68. Stworz funkcje, która pobiera idOsoby i zwraca rok ostatniej wypłaty dlaa tej osoby
  69. */
  70. CREATE FUNCTION dbo.pobierzOsobe (@idOsoby INT) RETURNS DATE
  71. AS
  72. BEGIN
  73.  
  74.     RETURN (SELECT MAX(DataWyplaty) FROM Zarobki
  75.     WHERE idOsoby = @idOsoby);
  76.  
  77. END
  78.  
  79. SELECT YEAR(dbo.pobierzOsobe(3)) AS [Rok Ostatniej Wyplaty]
  80. GO
  81.  
  82.  
  83.  
  84. /* zad 6.       ZROBIONE*/
  85. /*
  86. Stworz funkcje, ktora podaje idOsoby, a zwraca w wyniku Nazwisko, Imie i ilosc faktur danego klienta
  87. */
  88. CREATE FUNCTION dbo.zwrocKlienta (@idOsoby INT)
  89. RETURNS @tab
  90. TABLE(nazwisko VARCHAR(20), imie VARCHAR(20), liczbaFaktur INT)
  91. AS
  92. BEGIN
  93.     INSERT INTO @tab SELECT k.Nazwisko, k.Imie, COUNT(f.IdFaktury) FROM Klienci k
  94.     JOIN Faktury f ON f.IdKlienta = k.IdKlienta
  95.     WHERE f.idOsoby = @idOsoby
  96.     GROUP BY k.Nazwisko, k.Imie;
  97.    
  98.     RETURN;
  99. END
  100. GO
  101.  
  102. SELECT * FROM zwrocKlienta(2)
  103. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement