· 6 years ago · May 16, 2019, 06:52 PM
1--zadanie 30
2drop table if exists daty
3go
4drop table if exists miasta
5go
6create table daty(
7 lp int identity,
8 nazwisko varchar(30) primary key not null,
9 data date
10)
11go
12insert into daty values
13('kowalski', '1998-09-01'),
14('malinowska', '1995-10-09'),
15('nowak', '1998-02-09'),
16('kowalewski', '1999-03-12'),
17('jankowski', '1999-09-01')
18go
19create table miasta(
20 lp int identity,
21 nazwisko varchar(30) primary key not null,
22 miasto varchar(20)
23)
24go
25insert into miasta values
26('kowalski', 'sopot'),
27('nowak', 'gdansk'),
28('malinowska', 'gdansk'),
29('kowalewski', 'gdynia'),
30('jankowski', 'sopot')
31go
32select * from daty order by lp
33go
34select * from miasta order by lp
35go
36----------------------------------------
37declare @tab1 table(
38 nazwisko varchar(30),
39 rok_ur int,
40 wiek int,
41 miasto varchar(20)
42)
43insert into @tab1
44select daty.nazwisko, year(data), datediff(year, data, getdate()), miasto from daty
45join miasta on
46miasta.nazwisko = daty.nazwisko
47select * from @tab1
48go
49----------------------------------------
50drop type if exists typ_tab2
51go
52create type typ_tab2 as table(
53 nazwisko varchar(30),
54 rok_ur int,
55 wiek int,
56 miasto varchar(20)
57)
58go
59declare @tab2 typ_tab2
60insert into @tab2
61select miasta.nazwisko, year(data), datediff(year, data, getdate()), miasto from miasta
62join daty on
63daty.nazwisko = miasta.nazwisko
64select * from @tab2
65----------------------------------------
66declare @tab3 table (
67 nazwisko varchar(30),
68 miasto varchar(20),
69 wiek int,
70 ocena_wieku varchar(30)
71)
72
73insert into @tab3
74select daty.nazwisko, miasto, datediff(year, data, getdate()),
75case
76 when datediff(year, data, getdate()) < 21 then 'osoba mloda'
77 when datediff(year, data, getdate()) < 55 then 'osoba dojrzala'
78 else 'osoba starsza'
79end
80from daty
81join miasta on
82miasta.nazwisko = daty.nazwisko
83select * from @tab3
84----------------------------------------
85declare @tab4 table (
86 nazwisko varchar(30),
87 miasto varchar(20),
88 wiek int,
89 opis varchar(30)
90)
91insert into @tab4
92select daty.nazwisko, miasto, datediff(year, data, getdate()), 'mieszkaniec gdanska'
93from daty
94join miasta on
95miasta.nazwisko = daty.nazwisko
96where miasto='gdansk'
97select * from @tab4
98----------------------------------------
99drop procedure if exists proc1
100go
101create procedure proc1 as
102declare @wynik table(
103 [ilosc mieszkancow] int,
104 miasto varchar(20)
105)
106insert into @wynik
107select count(*), miasto from miasta
108join daty on
109daty.nazwisko = miasta.nazwisko
110where year(data) > 1998
111group by miasto
112select * from @wynik
113go
114exec proc1
115go
116----------------------------------------
117drop function if exists func1
118go
119create function func1()
120returns table as
121return (
122 select count(*) as [ilosc mieszkancow], miasto from miasta
123 join daty on
124 daty.nazwisko = miasta.nazwisko
125 group by miasto, data
126 having year(data) > 1998
127)
128go
129select * from func1()
130go
131----------------------------------------
132declare @tab5 table (
133 nazwisko varchar(30),
134 miasto varchar(20),
135 wiek int,
136 opis varchar(30)
137)
138insert into @tab5
139select daty.nazwisko, miasto, datediff(year, data, getdate()), 'osoba najmlodsza'
140from daty
141join miasta on
142miasta.nazwisko = daty.nazwisko
143where data = (select max(data) from daty)
144select * from @tab5