-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathZ2 SQL.sql
97 lines (78 loc) · 4.2 KB
/
Z2 SQL.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*Z2 Karol Sekściński GR4 319093 */
/*1.Pokazać dane podstawowe firmy, w jakim mieście się znajduje i w jakim to jest województwie*/
SELECT f.id_miasta AS [ID]
, LEFT(f.nazwa, 15) AS [Nazwa_firmy]
, LEFT(f.kod_pocztowy,6) AS [Kod_pocztowy_firmy]
, LEFT(m.kod_woj, 10) AS [WOJEWODZTWO]
, LEFT(m.nazwa,15) AS [MIASTO]
FROM FIRMY f
join MIASTA m on (m.id_miasta = f.id_miasta)
join WOJ w on (w.kod_woj = m.kod_woj)
/*
ID Nazwa_firmy Kod_pocztowy_firmy WOJEWODZTWO MIASTO
----------- --------------- ------------------ ----------- ---------------
8 FIRMA ZERO 01234 POD SUWALKI
6 BALFA 12345 MAZ WYSZKOW
1 ABETA 23456 MAZ WARSZAWA
7 GAMMA 34567 POD BIALYSTOK
3 ZETA 45678 MAZ RADOM
9 BETAF 56789 POD SOKOLKA
5 FIRMA SZOSTA 67890 MAZ OSTROLEKA
10 FIRMA SIODMAA 78901 POD KRYNKI
4 FIRMA OSMA 89012 MAZ SIERPC
4 BETAK 90123 MAZ SIERPC
(10 row(s) affected)
*/
/*2.Pokazać wszystkie firmy o nazwie na literę X i ostatniej literze nazwiska Y lub Z
(jeżeli nie macie takowych to wybierzcie takie warunki - inną literę początkową i inne 2 końcowe)
które mają pensje pomiędzy 3000 a 5000 na stanowisku Prezes
(też możecie zmienić jeżeli macie głownie inne zakresy czy nie ma takiego stanowiska)
(wystarczą dane z tabel etaty, firmy, osoby , miasta) aby pokazać dane etatu, firmy i osoby na tym etacie)
*/
SELECT e.id_firmy AS [ID_FIRMY]
, f.nazwa AS [Nazwa_firmy]
, e.pensja AS [PENSJA]
, o.imie AS [imie]
, o.nazwisko AS [nazwisko]
, e.stanowisko AS [stanowisko]
FROM ETATY e
join FIRMY f on (e.id_firmy = f.nazwa_skr) and (e.pensja >= 3000 and e.pensja <= 5000 and e.stanowisko = N'PREZES')
join OSOBY o on (e.id_osoby = o.id_osoby)
join MIASTA mO on (mO.id_miasta = o.id_miasta)
join MIASTA mF on (mF.id_miasta = f.id_miasta)
WHERE f.nazwa LIKE N'B%a' OR f.nazwa LIKE N'B%k'
/*
ID_FIRMY Nazwa_firmy PENSJA imie nazwisko stanowisko
-------- -------------------------------------------------- --------------------- -------------------------------------------------- -------------------------------------------------- --------------------------------------------------
FIRMA1 BALFA 4200,00 JAN NOWAK PREZES
FIRMA9 BETAK 3500,00 KLAUDIA BEC PREZES
(2 row(s) affected)
*/
/*
3.Pokazać firmę o najdłuższej nazwie w bazie
(najpierw szukamy MAX z LEN(nazwa) a potem pokazujemy te FIRMY z taką długością nazwy)
*/
SELECT MAX(LEN(f.nazwa)) AS [NAJDLUZSZA_NAZWA]
INTO #TT
FROM FIRMY f
SELECT *
FROM FIRMY f
join #TT t on (t.[NAJDLUZSZA_NAZWA] = (LEN(f.nazwa)))
/*
nazwa_skr id_miasta nazwa kod_pocztowy ulica NAJDLUZSZA_NAZWA
--------- ----------- -------------------------------------------------- ------------ -------------------------------------------------- ----------------
FIRMA7 10 FIRMA SIODMAA 78901 SIENNA 13
(1 row(s) affected)
*/
/*4.Policzyć liczbę firm w mieście o nazwie (tu daję Wam wybór - w którym mieście macie najwięcej)
(zapytanie powinno pokazać kolumnę [liczba firm w xx])
*/
SELECT COUNT(f.id_miasta) AS [Liczba_firm_w_Sierpcu]
FROM MIASTA m
join FIRMY f on ((f.id_miasta = m.id_miasta) and (m.nazwa = N'SIERPC')) /*Tam jest najwiecej firm*/
/*
Liczba_firm_w_Sierpcu
---------------------
2
(1 row(s) affected)
*/