Untitled

mail@pastecode.io avatar
unknown
mysql
3 years ago
2.3 kB
2
Indexable
Never
/* Z3, Filip, Budzyński, 3 , 319021
Z3.1 - policzyć liczbę osób w każdym mieœcie (zapytanie z grupowaniem)
Najlepiej wynik zapamiętać w tabeli tymczasowej

Z3.2 - korzystajšc z wyniku Z3,1 - pokazać, które miasto ma największš liczbę osób
(zapytanie z fa - analogiczne do zadań z Z2)

Z3.3 Pokazać liczbę firm w każdym z województw (czyli grupowanie po kod_woj)

Z3.4 Poazać województwa w których nie ma żadnej firmy

(SELECT * FROM WOJ w WHERE NOT EXISTS (SELECT 1 ...... )
(Ja nie ma takowych to prosze dodać ze 2 takie WOJ )
(suma z3.3 i z3.4 powinna dać nam pełnš listę województw -
woj gdzie sa firmy i gdzie ich nie ma to razem powinny byc wszystkie
*/

USE b_319021
GO
--Z3.1
CREATE TABLE #TMP (
	[ile osób] int  NOT NULL,
	nazwa nvarchar(20) NOT NULL);


select	COUNT(*) as [ile osób]
,		m.nazwa
		INTO #TMP
from OSOBY o
	join MIASTA m ON (o.id_miasta = m.id_miasta)
	GROUP BY m.nazwa

select * from #TMP
/*
ile osób    nazwa
----------- -----------
5           Lubartów
3           Lublin
4           Płock
6           Warszawa
*/


--Z3.2
declare @max int
select @max = max(t.[ile osób])
from #tmp t

select *
from #TMP t
where @max =(t.[ile osób])
/* 
ile osób    nazwa
----------- ---------
6           Warszawa
*/

--Z3.3
select count(*) as [ile firm]
,	w.kod_woj as [kod woj]
from MIASTA m
	join WOJ w ON (w.kod_woj = m.kod_woj)
	join FIRMY f ON (m.id_miasta = f.id_miasta)
group by w.kod_woj
/*
ile firm    kod woj
----------- -------
2           LUB 
4           MAZ 
*/

--Z3.4
SELECT w.nazwa 
,	 w.kod_woj
FROM WOJ w 
WHERE NOT EXISTS 
	(SELECT 1 FROM FIRMY f join MIASTA m ON (f.id_miasta = m.id_miasta)
	where (w.kod_woj = m.kod_woj))
/*
nazwa                                              kod_woj
-------------------------------------------------- -------
Małopolskie                                        MPL 
*/

/*Sprawdzamy sumą dwóch zapytań, Z3.3 i Z3.4*/
select w.kod_woj as [kod woj]
from MIASTA m
	join WOJ w ON (w.kod_woj = m.kod_woj)
	join FIRMY f ON (m.id_miasta = f.id_miasta)
group by w.kod_woj
UNION
SELECT w.kod_woj
FROM WOJ w 
WHERE NOT EXISTS 
	(SELECT 1 FROM FIRMY f join MIASTA m ON (f.id_miasta = m.id_miasta)
	where (w.kod_woj = m.kod_woj))
/*
kod woj
-------
LUB 
MAZ 
MPL 
*/