-- zad 1
select * from hotele where gwiazdki between 3 and 5;
-- zad 2
select max(gwiazdki) as max, min(gwiazdki) as min, avg(gwiazdki) as avg from hotele;
select max(gwiazdki) as 'max liczba gwiazdek', min(gwiazdki) as 'min liczba gwiazdek',
avg(gwiazdki) as 'średnia liczba gwiazdek'from hotele;
-- zad 3
select nazwa, id_rezerwacji
from hotele, pokoje, rezerwacje
where hotele.id_hotel=pokoje.id_hotel and pokoje.id_pokoju=rezerwacje.id_pokoju;

select nazwa, count(*) as 'liczba rezerwacji'
from hotele, pokoje, rezerwacje
where hotele.id_hotel=pokoje.id_hotel and pokoje.id_pokoju=rezerwacje.id_pokoju
group by nazwa
order by count(*) asc;

-- zad 4
select imie, nazwisko, id_rezerwacji
from klienci left outer join rezerwacje
on klienci.id_klient=rezerwacje.id_klient
where id_rezerwacji is null;

-- zad 5
select imie, nazwisko, count(*)
from klienci inner join rezerwacje
on klienci.id_klient=rezerwacje.id_klient
group by nazwisko, imie
having count(*)=(select count(*)
       from klienci inner join rezerwacje
       on klienci.id_klient=rezerwacje.id_klient
       group by nazwisko, imie
       order by count(*) desc
       limit 1);

select count(*)
from klienci inner join rezerwacje
on klienci.id_klient=rezerwacje.id_klient
group by nazwisko, imie order by count(*) desc
limit 1;


-- zad 7
select nazwa_miasta, count(*) as 'Liczba klientów'
from miasta inner join klienci
on miasta.id_miasta=klienci.id_miasto
group by id_miasta
having count(*)=(
  select count(*)
  from miasta inner join klienci
  on miasta.id_miasta=klienci.id_miasto
  group by id_miasta
  order by count(*) desc
  limit 1);

-- zad 8
select nazwa, count(*)
from hotele, pokoje, rezerwacje
where hotele.id_hotel=pokoje.id_hotel and
pokoje.id_pokoju=rezerwacje.id_pokoju
group by nazwa
order by 2 asc
limit 5;

-- zad 9
select nazwa_kraju, count(*)
from kraje inner join hotele
on kraje.id_kraju=hotele.id_kraj
group by id_kraju
having count(*)=(
  select count(*)
  from kraje inner join hotele
  on kraje.id_kraju=hotele.id_kraj
  group by id_kraju
  order by 1 desc
  limit 1);

-- zad 10
select nazwa_kraju, count(*)
from kraje inner join klienci
on kraje.id_kraju=klienci.id_kraju
group by nazwa_kraju
order by count(*) desc;



-- zad 1
select nazwa, nazwa_miasta, nazwa_kraju
from hotele, miasta, kraje
where miasta.id_miasta=hotele.id_miasto and hotele.id_kraj=kraje.id_kraju;

select nazwa, nazwa_miasta, nazwa_kraju
from (hotele inner join miasta
on miasta.id_miasta=hotele.id_miasto) inner join kraje
on hotele.id_kraj=kraje.id_kraju;

-- zad 2
select hotele.*, nazwa_kraju
from hotele inner join kraje
on hotele.id_kraj=kraje.id_kraju
where gwiazdki between 2 and 3 and nazwa_kraju like 'Polska';

-- zad 3
select imie, nazwisko, nazwa_kraju
from klienci inner join kraje
on klienci.id_kraju=kraje.id_kraju
where nazwa_kraju like 'Polska';

-- zad 4
select imie, nazwisko, nazwa_miasta
from klienci inner join miasta
on klienci.id_miasto=miasta.id_miasta
where nazwa_miasta like 'Warszawa';

-- zad 5
select count(*) as 'Klienci z Polski'
from klienci inner join kraje
on klienci.id_kraju=kraje.id_kraju
where nazwa_kraju like 'Polska';

-- zad 6
select count(*) as 'Klienci z Warszawy'
from klienci inner join miasta
on klienci.id_miasto=miasta.id_miasta
where nazwa_miasta like 'Warszawa';

-- zad 7
select distinct nazwisko
from klienci;

-- zad 8
select imie, nazwisko, nazwa_miasta, nazwa_kraju, adres
from klienci, miasta, kraje
where klienci.id_miasto=miasta.id_miasta 
and klienci.id_kraju=kraje.id_kraju;

-- zad 9
select nazwa, adres, nazwa_miasta, nazwa_kraju
from hotele
inner join miasta on hotele.id_miasto=miasta.id_miasta
inner join kraje on hotele.id_kraj=kraje.id_kraju;

-- zad 10
select rezerwacje.*, nazwa_kraju
from rezerwacje
inner join klienci on rezerwacje.id_klient=klienci.id_klient
inner join kraje on klienci.id_kraju=kraje.id_kraju
where nazwa_kraju like'Polska';
