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: