Advertisement
Guest User

111

a guest
Apr 21st, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.85 KB | None | 0 0
  1. --1. Zadeklarować dwie zmienne tekstowe: imie i nazwisko oraz jedną zmienną liczbową o nazwie numer porządkowy.
  2. --Przypisać wartości zmiennym:
  3. --Jan, Kowalski, 100
  4. --i wyświetlić je.
  5.  
  6. DECLARE
  7. @imie AS VARCHAR(30),
  8. @nazwisko AS VARCHAR(30),
  9. @numer_porzadkowy AS INT
  10. BEGIN
  11. SELECT @imie='Jan', @nazwisko='Kowalski', @numer_porzadkowy=100
  12. PRINT @imie + space(1) + @nazwisko + space(1) + cast(@numer_porzadkowy as varchar)
  13. END
  14.  
  15. --2. Napisać program, który z wykorzystaniem instrukcji EXEC policzy liczbę wierszy w dowolnej tabeli, a następnie utworzy tabelę tymczasową o nazwie temp i wstawi tam liczbę wcześniej wyliczonych wierszy. Zapytania muszą być przechowywane w zmiennych tekstowych.
  16.  
  17. CREATE TABLE czas (id int);
  18. INSERT INTO czas values (1),(2),(3),(4),(5);
  19.  
  20. create table #temp (liczba int); -- tabela tymczasowa
  21.  
  22. DECLARE
  23. @zapytanie VARCHAR(100),
  24. @wstawianie VARCHAR(100)
  25. BEGIN
  26. SELECT @zapytanie= 'SELECT COUNT(*) FROM CZAS'
  27. -- EXEC wykonuje zapytania SQL zapisane w postaci tekstowej
  28. EXEC (@zapytanie)
  29. SELECT @wstawianie= 'INSERT INTO #TEMP (liczba) ' +@zapytanie
  30. EXEC (@wstawianie)
  31. END
  32.  
  33. select * from #temp;
  34. --3. Napisać program, który wyświetli wszystkie parzyste liczby z zakresu od 1 do 10. Dodatkowo po wyświetleniu każdej liczby wykonywanie kodu ma być wstrzymane na 2 sekundy.
  35.  
  36. DECLARE
  37. @i INT
  38. BEGIN
  39. SET @i=2
  40. WHILE @i<=10
  41. BEGIN
  42. PRINT @i
  43. SET @i+=2
  44. WAITFOR DELAY '00:00:02'
  45. END
  46. END
  47.  
  48. --4. Napisać program, który wyświetli wszystkie liczby z zakresu od 1 do 10. Jeżeli liczba jest podzielna przez 3 to wypisze stosowną informację.
  49.  
  50. DECLARE
  51. @i INT
  52. BEGIN
  53. SET @i=1
  54. WHILE @i<=10
  55. BEGIN
  56. PRINT @i
  57. if @i % 3 = 0 PRINT 'Liczba jest podzielna przez 3: '+CAST(@i AS VARCHAR)
  58. SET @i+=1
  59. --WAITFOR DELAY '00:00:02'
  60. END
  61. END
  62.  
  63. --5. Wygenerować tabelę o nazwie Dane, która będzie zawierała dwie kolumny: opis oraz wartość. W tabeli powinny być zamieszczone opisy: A, B, C, D i E oraz przyporządkowane im liczby z zakresu od 1 do 100. Należy wypełnić 2000 wierszy tablicy. Jeżeli kolejny dodawany wiersz jest podzielny przez 5 to powinien otrzymać opis E, przez 4: D, przez 3: C, przez 2: B oraz przez 1: A. Podpowiedź: funkcja RAND() służy do generowania liczby losowej zmiennoprzecinkowej z zakresu od 0 do 1.
  64.  
  65. DROP TABLE dane
  66. GO
  67. CREATE TABLE dane (opis varchar(1), wartosc numeric(3));
  68. GO
  69. DECLARE
  70. @liczbawierszy AS INT,
  71. @i AS INT,
  72. @los AS INT,
  73. @opis AS VARCHAR(1),
  74. @wstawianie AS VARCHAR(100)
  75. BEGIN
  76. SET @i=1
  77. SET @liczbawierszy=10;
  78. WHILE @i<@liczbawierszy
  79. BEGIN
  80. set @los=CAST(RAND()*100 AS INT)
  81. IF @los % 5 = 0 SET @opis='E'
  82. ELSE IF @los % 4 = 0 SET @opis='D'
  83. ELSE IF @los % 3 = 0 SET @opis='C'
  84. ELSE IF @los % 2 = 0 SET @opis='B'
  85. ELSE SET @opis='A'
  86. PRINT CAST(@los AS VARCHAR) + space(1) + @opis
  87. SET @i+=1
  88. SELECT @wstawianie= 'INSERT INTO dane VALUES ('''+@opis+''','+CAST(@los AS VARCHAR)+')'
  89. EXECUTE (@wstawianie)
  90. END
  91. END
  92.  
  93. --6. Wyświetlić utworzoną wcześniej tabelę wypisując w trzech kolumnach następujące wartości:
  94. --Klasa wielkości
  95. --Opis
  96. --Łączna wartość
  97. --gdzie:
  98. --- klasa wielkości ma reprezentować przedziały:
  99. --małe: 1 do 30
  100. --średnie: 31 do 70
  101. --duże: 71 do 100
  102. --- łączna wartość to funkcja agregująca SUM
  103. --Wyniki mają być koniecznie pogrupowane według klas wielkości i opisu.
  104. with zapytanie as (
  105. select
  106. case
  107. when wartosc between 1 and 30 then 'małe'
  108. when wartosc between 31 and 70 then 'średnie'
  109. when wartosc between 71 and 100 then 'duże'
  110. end as klasa,
  111. opis,
  112. wartosc
  113. from dane)
  114. select klasa, opis, SUM(wartosc) from zapytanie group by klasa, opis order by 1,2
  115. delete from dane where wartosc not between 1 and 100
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement