Archiwa tagu: kurs
Kurs PostgreSQL (tutorial)
Z uwagi na to, że wpisów dot. PostgreSQL jest coraz więcej postanowiłem skopować wpisy z ogólnego wpisu dotyczcego SQL-a i stworzyć nowy osobny wpis i stworzyć pewnego rodzaju kurs (tutorial) PosgreSQL-a.
Kurs PostgreSQL spis treści
Baza Biblioteka 2. Pokaż 10 najczęściej wypożyczających czytelników.
SQL tutorial. Baza Biblioteka ćwiczenia. Środowisko SQL SERVER.
Baza: Biblioteka
Zadanie nr: 2
Treść: Pokaż 10 najczęściej wypożyczających czytelników.
Polecenia/funkcje w zapytaniu: SELECT TOP, COUNT(), JOIN, GROUP BY, ORDER BY
Rozwiązanie:
Zapytanie:
select top 10
C.login
,COUNT(*) as [Liczba wypozyczen]from
Wypozyczenia W
join Czytelnicy C on W.id_czytelnik = C.id_czytelnik
group by
C.loginorder by
COUNT(*) desc
Wynik:
Baza Biblioteka 1. Pokaż 10 najczęściej wypożyczanych książek.
SQL tutorial. Baza Biblioteka ćwiczenia. Środowisko SQL SERVER.
Baza: Biblioteka
Zadanie nr: 1
Treść: Pokaż 10 najczęściej wypożyczanych książek.
Polecenia/funkcje w zapytaniu: SELECT TOP, COUNT(), JOIN, GROUP BY, ORDER BY
Rozwiązanie:
Zapytanie:
select top 10
K.tytul
,COUNT(*) as [Ilosc wypozyczen]from
wypozyczenia W
join Ksiazki K on W.id_ksiazka = K.id_ksiazka
group by
K.tytul
,W.id_ksiazka
order by
COUNT(*) desc
Wynik:
db HOTELS 11. Wyświetl wszystkie rezerwacje (z informacją czy zrealizowane)
SQL tutorial. db Hotels exercises. SQL SERVER.
Baza: Hotele/Hotels
Zadanie nr: 11
Treść: Wyświetl wszystkie rezerwacje (z informacją czy zrealizowane)
Polecenia/funkcje w zapytaniu: SELECT, CASE, FROM, JOIN, WHERE
Rozwiązanie:
Zapytanie:
SELECT
Klient.client_last_name AS Nazwisko
,Klient.client_first_name AS [Imie]
,Kraj.country_name AS [Kraj (hotel)]
,Miasto.city_name AS [Miasto (hotel)]
,reservation_starting_date AS [Data rozpoczecia rezerwacji]
,reservation_final_date AS [Data zakończenia rezerwacji]
,CASE
WHEN Rezerwacja.reservation_realized = 1 THEN 'Zrealizowana'
ELSE 'NIE zrealizowana'
END AS [Stan realizacji]
FROM
reservations Rezerwacja
JOIN clients Klient ON Rezerwacja.reservation_client_id = Klient.client_id
JOIN rooms Pokoj ON Rezerwacja.reservation_room_id = Pokoj.room_id
JOIN hotels Hotel ON Pokoj.room_hotel_id = Hotel.hotel_id
JOIN countries Kraj ON Hotel.hotel_country_id = Kraj.country_id
JOIN cities Miasto ON Hotel.hotel_city_id = Miasto.city_id
WHERE
Klient.client_last_name = 'Banko'
Wynik:
db HOTELS 10. Oblicz udział procentowy hoteli w danym kraju względem wszystkich hoteli w bazie
SQL tutorial. db Hotels exercises. SQL SERVER.
Baza: Hotele/Hotels
Zadanie nr: 10
Treść: Oblicz udział procentowy hoteli w danym kraju względem wszystkich hoteli w bazie
Polecenia/funkcje w zapytaniu: DECLARE, SELECT, COUNT, FROM, WHERE, CAST(), JOIN, GROUP BY, ORDER BY
Rozwiązanie:
Zapytanie:
DECLARE @ile_hoteli numeric =
(
SELECT
COUNT(*)
FROM
hotels
)
SELECT
C.country_name AS Kraj
,CAST(COUNT(*)*100/@ile_hoteli AS NUMERIC(6,2)) AS [%]
FROM
hotels H
JOIN countries C ON H.hotel_country_id = C.country_id
GROUP BY
C.country_name
ORDER BY
2 DESC
Wynik:
db HOTELS 9. Jakie było obłożenie wszystkich hoteli (%) w dniu 2016-10-10
SQL tutorial. db Hotels exercises. SQL SERVER.
Baza: Hotele/Hotels
Zadanie nr: 9
Treść: Jakie było obłożenie wszystkich hoteli (%) w dniu 2016-10-10
Polecenia/funkcje w zapytaniu: DECLARE, SELECT, COUNT, FROM, WHERE, BETWEEN, CAST(), ROUND()
Rozwiązanie:
Zapytanie:
DECLARE @dataSprawdzenia date = '2016-10-10'
DECLARE @ilePokoi int =
(
SELECT
COUNT(*)
FROM
rooms
)
DECLARE @ilePokoiZajetych int =
(
SELECT
COUNT(*)
FROM
reservations R
WHERE
@dataSprawdzenia BETWEEN R.reservation_starting_date AND R.reservation_final_date
)
DECLARE @oblozenie REAL = 100*@ilePokoiZajetych/@ilePokoi;
SELECT
'Wszystkich pokoi: '+CAST(@ilePokoi AS NVARCHAR) AS Pokoi
,'Zajętych pokoi: '+CAST(@ilePokoiZajetych AS NVARCHAR) AS Zajętych
,'Obłożenie pokoi w dn. 2016-10-10 wynosi: '
+CAST(CAST(ROUND((100*CAST(@ilePokoiZajetych AS NUMERIC)/CAST(@ilePokoi AS NUMERIC)),2) AS NUMERIC(6,2)) AS NVARCHAR)
+'%' AS Obłożenie
Wynik:
db HOTELS 8. W jakim hotelu złożono najwięcej rezerwacji które zostały zrealizowane.
SQL tutorial. db Hotels exercises. SQL SERVER.
Baza: Hotele/Hotels
Zadanie nr: 8
Treść: W jakim hotelu złożono najwięcej rezerwacji które zostały zrealizowane.
Polecenia/funkcje w zapytaniu: SELECT TOP, Aliasy, COUNT(), FROM, JOIN, WHERE, GROUP BY, ORDER BY
Rozwiązanie:
Zapytanie:
SELECT TOP 1
CO.country_name AS Kraj
,CI.city_name AS Miasto
,H.hotel_id AS [Nazwa hotelu]
,COUNT(*) AS [Ilość złożonych rezerwacji]
FROM
reservations RE
JOIN rooms RO ON RE.reservation_room_id = RO.room_id
JOIN hotels H ON RO.room_hotel_id = H.hotel_id
JOIN countries CO ON H.hotel_country_id = CO.country_id
JOIN cities CI ON H.hotel_city_id = CI.city_id
WHERE
RE.reservation_realized = 1
GROUP BY
CO.country_name , CI.city_name , H.hotel_id
ORDER BY
COUNT(*) DESC
Wynik:
db HOTELS 7. W jakim hotelu złożono najwięcej rezerwacji.
SQL tutorial. db Hotels exercises. SQL SERVER.
Baza: Hotele/Hotels
Zadanie nr: 7
Treść: W jakim hotelu złożono najwięcej rezerwacji.
Polecenia/funkcje w zapytaniu: SELECT TOP, Aliasy, COUNT(), FROM, JOIN, GROUP BY, ORDER BY
Rozwiązanie:
Zapytanie:
SELECT TOP 1
CO.country_name AS Kraj
,CI.city_name AS Miasto
,H.hotel_id AS [Nazwa hotelu]
,COUNT(*) AS [Ilość złożonych rezerwacji]
FROM
reservations RE
JOIN rooms RO ON RE.reservation_room_id = RO.room_id
JOIN hotels H ON RO.room_hotel_id = H.hotel_id
JOIN countries CO ON H.hotel_country_id = CO.country_id
JOIN cities CI ON H.hotel_city_id = CI.city_id
GROUP BY
H.hotel_id , CO.country_name , CI.city_name
ORDER BY
COUNT(*) DESC
Wynik:
db HOTELS 6. Który hotel ma najwięcej miejsc parkingowych
SQL tutorial. db Hotels exercises. SQL SERVER.
Baza: Hotele/Hotels
Zadanie nr: 6
Treść: Który hotel ma najwięcej miejsc parkingowych
Polecenia/funkcje w zapytaniu: DECLARE, SELECT TOP, COUNT(), GROUP BY, FROM, ORDER BY, WHERE, HAVING
Rozwiązanie:
Zapytanie:
DECLARE @max_parking_places int = (
SELECT TOP 1
COUNT(P.parking_hotel_id)
FROM
parking P
GROUP BY
P.parking_hotel_id
ORDER BY
1 DESC
);
SELECT
H.hotel_name AS [Nazwa hotelu]
,COUNT(P.parking_hotel_id) AS [Ilość miejsc parkingowych]
FROM
parking P
JOIN hotels H ON P.parking_hotel_id = H.hotel_id
GROUP BY
P.parking_hotel_id, H.hotel_name
HAVING
COUNT(P.parking_hotel_id) = @max_parking_places
Wynik: