Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --1. Zadeklarować dwie zmienne tekstowe: imie i nazwisko oraz jedną zmienną liczbową o nazwie numer porządkowy.
- --Przypisać wartości zmiennym:
- --Jan, Kowalski, 100
- --i wyświetlić je.
- DECLARE
- @imie AS VARCHAR(30),
- @nazwisko AS VARCHAR(30),
- @numer_porzadkowy AS INT
- BEGIN
- SELECT @imie='Jan', @nazwisko='Kowalski', @numer_porzadkowy=100
- PRINT @imie + space(1) + @nazwisko + space(1) + cast(@numer_porzadkowy as varchar)
- END
- --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.
- CREATE TABLE czas (id int);
- INSERT INTO czas values (1),(2),(3),(4),(5);
- create table #temp (liczba int); -- tabela tymczasowa
- DECLARE
- @zapytanie VARCHAR(100),
- @wstawianie VARCHAR(100)
- BEGIN
- SELECT @zapytanie= 'SELECT COUNT(*) FROM CZAS'
- -- EXEC wykonuje zapytania SQL zapisane w postaci tekstowej
- EXEC (@zapytanie)
- SELECT @wstawianie= 'INSERT INTO #TEMP (liczba) ' +@zapytanie
- EXEC (@wstawianie)
- END
- select * from #temp;
- --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.
- DECLARE
- @i INT
- BEGIN
- SET @i=2
- WHILE @i<=10
- BEGIN
- PRINT @i
- SET @i+=2
- WAITFOR DELAY '00:00:02'
- END
- END
- --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ę.
- DECLARE
- @i INT
- BEGIN
- SET @i=1
- WHILE @i<=10
- BEGIN
- PRINT @i
- if @i % 3 = 0 PRINT 'Liczba jest podzielna przez 3: '+CAST(@i AS VARCHAR)
- SET @i+=1
- --WAITFOR DELAY '00:00:02'
- END
- END
- --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.
- DROP TABLE dane
- GO
- CREATE TABLE dane (opis varchar(1), wartosc numeric(3));
- GO
- DECLARE
- @liczbawierszy AS INT,
- @i AS INT,
- @los AS INT,
- @opis AS VARCHAR(1),
- @wstawianie AS VARCHAR(100)
- BEGIN
- SET @i=1
- SET @liczbawierszy=10;
- WHILE @i<@liczbawierszy
- BEGIN
- set @los=CAST(RAND()*100 AS INT)
- IF @los % 5 = 0 SET @opis='E'
- ELSE IF @los % 4 = 0 SET @opis='D'
- ELSE IF @los % 3 = 0 SET @opis='C'
- ELSE IF @los % 2 = 0 SET @opis='B'
- ELSE SET @opis='A'
- PRINT CAST(@los AS VARCHAR) + space(1) + @opis
- SET @i+=1
- SELECT @wstawianie= 'INSERT INTO dane VALUES ('''+@opis+''','+CAST(@los AS VARCHAR)+')'
- EXECUTE (@wstawianie)
- END
- END
- --6. Wyświetlić utworzoną wcześniej tabelę wypisując w trzech kolumnach następujące wartości:
- --Klasa wielkości
- --Opis
- --Łączna wartość
- --gdzie:
- --- klasa wielkości ma reprezentować przedziały:
- --małe: 1 do 30
- --średnie: 31 do 70
- --duże: 71 do 100
- --- łączna wartość to funkcja agregująca SUM
- --Wyniki mają być koniecznie pogrupowane według klas wielkości i opisu.
- with zapytanie as (
- select
- case
- when wartosc between 1 and 30 then 'małe'
- when wartosc between 31 and 70 then 'średnie'
- when wartosc between 71 and 100 then 'duże'
- end as klasa,
- opis,
- wartosc
- from dane)
- select klasa, opis, SUM(wartosc) from zapytanie group by klasa, opis order by 1,2
- delete from dane where wartosc not between 1 and 100
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement