{"id":"informator-maturalny-informatyka-2015/zad/20","paper_id":"informator-maturalny-informatyka-2015","number":"20","points":null,"ptype":"closed","subject":"informatyka","category":"informator-maturalny","year":2015,"month":null,"level":null,"text":"Zadanie 20. Hotel Panorama (0-10)\nDane są trzy pliki tekstowe o nazwach: klienci.txt; pokoje.txt; noclegi.txt.\nZawierają one informacje na temat zrealizowanych usług hotelowych hotelu Panorama\nw okresie wakacyjnym, tzn. zameldowanie gościa nastąpiło od 1.07.2013 do 31.08.2013.\nPierwszy wiersz każdego z plików jest wierszem nagłówkowym, a dane w wierszach\nrozdzielone są znakami tabulacji.\nPlik o nazwie klienci.txt zawiera informacje o gościach hotelu. W każdym wierszu\npliku znajdują się następujące dane: numer dowodu osobistego gościa hotelu (nr_dowodu),\nnazwisko (nazwisko), imię (imie) i miejsce zamieszkania (miejscowosc).\nPrzykład:\nnr_dowodu nazwisko imie\nmiejscowosc\nSAS253401 Pastuszak Joanna\nSzczecin\nUNC608098 Siudut\nAnna\nJaworzno\nNMZ567271 Konopka\nKamil\nTarnowskie Gory\nPlik o nazwie pokoje.txt zawiera w każdym wierszu: numer pokoju (nr_pokoju),\nmaksymalną liczbę osób, które mogą nocować w pokoju (liczba_osob), standard pokoju\n(standard), gdzie S - oznacza pokój standardowy, W - pokój o podwyższonym\nstandardzie oraz cenę wynajęcia pokoju na jedną dobę (cena).\nPrzykład:\nnr_pokoju liczba_osob\nstandard cena\n101\n2\nS\n220\n102\n2\nS\n220\n103\n2\nS\n220\nPlik o nazwie noclegi.txt zawiera w każdym wierszu: identyfikator noclegu (id_noc),\ndatę przyjazdu gościa hotelu (data_przyjazdu), datę wyjazdu gościa (data_wyjazdu),\nnumer dowodu osobistego gościa korzystającego z danego noclegu (nr_dowodu), numer\npokoju (nr_pokoju), oraz dodatkowe usługi, z których skorzystał gość podczas noclegu\n(uslugi).\nPrzykład:\nid_noc data_przyjazdu\ndata_wyjazdu\nnr_dowodu\nnr_pokoju\nuslugi\n198\n2013-07-10\n2013-07-12\nJAA932190\n501\n2020\n199\n2013-07-10\n2013-07-11\nSIS395155\n108\n1010\n206\n2013-07-10\n2013-07-13\nRMS452742\n113\n0030\nKorzystanie z dodatkowych usług odnotowane jest w postaci liczb jednocyfrowych.\nNa pierwszej pozycji od lewej strony odnotowana jest liczba konsumowanych śniadań (cena\njednostkowa 20 zł), na drugiej pozycji - liczba wejść na basen (cena jednostkowa 30 zł),\nna trzeciej - parking (cena jednostkowa 15 zł), a na ostatniej pozycji - czyszczenie ubrania\n(cena jednostkowa 35 zł).\nNa przykład zapis:\n2020 - oznacza, że gość 2 razy jadł śniadanie w hotelu (2*20 zł), nie korzystał z basenu,\nprzez 2 doby parkował samochód na hotelowym parkingu (2*15 zł) oraz nie oddawał ubrania\ndo czyszczenia. W związku z tym do kosztu noclegu dopisuje się koszt dodatkowych usług\nw wysokości 70 zł.\n66 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015\n1130 - oznacza, że gość zjadł jeden raz śniadanie w hotelu (1*20 zł), jeden raz skorzystał\nz basenu (1*30 zł) i przez 3 doby parkował samochód na hotelowym parkingu (3*15 zł) oraz\nnie oddawał ubrania do czyszczenia. Gościowi do kosztu noclegu dopisuje się koszt\ndodatkowych usług w wysokości 95 zł.\nUwaga: Żadna z usług nie była zamawiana więcej niż 9 razy.\nKorzystając z danych zawartych w tych plikach oraz z dostępnych narzędzi informatycznych,\nwykonaj poniższe polecenia. Każdą odpowiedź umieść w pliku wyniki.txt, poprzedzając\nją oznaczeniem odpowiedniego podpunktu od a) do e).\na) Podaj imię i nazwisko gościa, który skorzystał z największej liczby noclegów podczas\njednorazowego pobytu w hotelu Panorama. Podaj liczbę tych noclegów.\nb) Podaj zestawienie (imię i nazwisko) osób z Krakowa goszczących w hotelu Panorama,\nktórzy korzystali z parkingu.\nc) Utwórz listę miejscowości, z których co najmniej 15 różnych osób nocowało choć raz\nw hotelu Panorama. Zestawienie posortuj alfabetycznie.\nd) Podaj kwotę uzyskaną z tytułu wynajmu pokoi oraz kwotę uzyskaną z opłat za korzystanie\nprzez gości z dodatkowych usług w okresie od 1.07.2013 do 31.08.2013.\ne) Podaj numery pokoi o podwyższonym standardzie, z których nigdy nie korzystali goście\nz Krakowa.\nDo oceny oddajesz plik(i) o nazwie(ach) ,\ntu wpisz nazwę(y) pliku(ów)\nzawierający(e) komputerową(e) realizację(e) Twoich obliczeń oraz plik tekstowy o nazwie\nwyniki.txt z odpowiedziami do podpunktów a), b), c), d), e).\nWymagania ogólne\nII. Wyszukiwanie, gromadzenie i przetwarzanie\ninformacji z różnych źródeł; opracowywanie\nza pomocą komputera: rysunków, tekstów danych\nliczbowych, motywów, animacji, prezentacji\nmultimedialnych.\nWymagania szczegółowe\n2. Wyszukiwanie, gromadzenie, selekcjonowanie,\nprzetwarzanie i wykorzystywanie informacji,\nkorzystanie z różnych źródeł i sposobów zdobywania\ninformacji.\nZdający:\n2) projektuje relacyjną bazę danych z zapewnieniem\nintegralności danych,\n3) stosuje metody wyszukiwania i przetwarzania\ninformacji w relacyjnej bazie danych; tworzy\naplikację bazodanową, wykorzystującą język zapytań,\nkwerendy, raporty; zapewnia integralność danych\nna poziomie pól, tabel, relacji.\nPrzykładowe zadania z rozwiązaniami 67\nSchemat punktowania\nPodpunkt\nCzynność\nLiczba\npunktów\nza\npodpunkt\nLiczba\npunktów\nza\nzadanie\na\nZa poprawną odpowiedź - 2 punkty,\nw tym za:\n imię i nazwisko - 1 punkt.\n liczbę noclegów - 1 punkt.\n2\n10\nb\nZa poprawną odpowiedź - 2 punkty.\nW przypadku powtórzeń - 1 punkt.\n2\nc\nZa poprawną odpowiedź - 2 punkty,\nw tym za:\n podanie listy - 1 punkt.\n za prawidłowe posortowanie - 1 punkt.\n2\nd\nZa poprawną odpowiedź - 2 punkty,\nw tym za:\n kwotę uzyskaną z tytułu wynajmu pokoi - 1 punkt.\n kwotę uzyskaną z opłat za korzystania przez gości\nz dodatkowych usług - 1 punkt.\n2\ne\nZa poprawną odpowiedź - 2 punkty.\nW przypadku braku jednego numeru lub wystąpienia\njednego numeru nieprawidłowego - 1 punkt.\n2\nZadanie 20. Hotel Panorama (0-10) - rozwiązanie\nPlik zawierający rozwiązanie znajdują się w folderze HOTEL.\nKomentarz\nZadanie Hotel Panorama należy do grupy zadań, które mogą być rozwiązywane narzędziami\nbazodanowymi lub z wykorzystaniem arkusza kalkulacyjnego. Baza składa się z trzech tabel:\nklienci (klucz główny - nr_dowodu), pokoje (klucz główny - nr_pokoju) i noclegi (klucz\ngłówny - Id_noclegu). Tabela klienci połączona zostanie z tabelą noclegi relacją typu „jeden\ndo wielu”, podobnie tabelę pokoje z tabelą noclegi łączy relacja typu „jeden do wielu”.\n68 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015\nW Accessie import plików z danymi jest prosty. Ambitni maturzyści mogą utworzyć bazę\ni zapytania w języku SQL:\n-- utworzenie bazy danych hotel\ncreate database hotel;\n-- ustawienie bazy hotel jako domyślnej\nuse hotel;\n-- utworzenie tabeli noclegi\nCREATE TABLE `noclegi` (\n`id_noc` int NOT NULL,\n`data_przyjazdu` date NOT NULL,\n`data_wyjazdu` date NOT NULL,\n`nr_dowodu` char(9) NOT NULL,\n`nr_pokoju` int NOT NULL,\n`uslugi` int(1) NOT NULL,\nPRIMARY KEY (`id_noc`)\n);\n-- zaladowanie danych do tabeli noclegi\nLOAD DATA INFILE\n\"C:\\\\Dane_hotel\\\\noclegi.csv\" INTO TABLE `noclegi` FIELDS\nTERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\\\\' LINES\nTERMINATED BY '\\n' (id_noc,data_przyjazdu,data_wyjazdu,nr_dowodu,nr_pokoju,uslugi);\n-- utworzenie tabeli klienci\nCREATE TABLE `klienci` (\n`nr_dowodu` char(9) NOT NULL,\n`nazwisko` char(20) NOT NULL,\n`imie` char(20) NOT NULL,\n`miejscowosc` char(20) NOT NULL,\nPRIMARY KEY (`nr_dowodu`)\n);\n-- zaladowanie danych do tabeli klienci\nLOAD DATA INFILE\n\"C:\\\\Dane_hotel\\\\klienci.csv\" INTO TABLE `klienci` FIELDS\nTERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\\\\' LINES\nTERMINATED BY '\\n' (nr_dowodu,nazwisko,imie,miejscowosc);\n-- utworzenie tabeli pokoje\nCREATE TABLE `pokoje` (\n`nr_pokoju` int(11) NOT NULL,\n`liczba_osob` int(11) NOT NULL,\n`standard` char(1) NOT NULL,\n`cena` int(11) NOT NULL,\nPRIMARY KEY (`nr_pokoju`)\n);\nPrzykładowe zadania z rozwiązaniami 69\n-- zaladowanie danych do tabeli pokoje\nLOAD DATA INFILE\n\"C:\\\\Dane_hotel\\\\pokoje.csv\" INTO TABLE `pokoje` FIELDS\nTERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\\\\' LINES\nTERMINATED BY '\\n' (nr_pokoju,liczba_osob,standard,cena);\nW poleceniu a) należy podać imię i nazwisko gościa, który skorzystał z największej liczby\nnoclegów podczas jednorazowego pobytu w hotelu Panorama oraz liczbę tych noclegów. Aby\npodać odpowiedź na tak postawione pytanie, należy obliczyć liczbę nocy, odejmując od daty\nwyjazdu datę przyjazdu, znaleźć maksimum i odpowiadającą temu maksimum osobę.\nZapytanie a:\nSELECT Klienci.imie, Klienci.nazwisko, (data_wyjazdu-data_przyjazdu) AS Liczba_nocy\nFROM Klienci, Noclegi\nWHERE ((Klienci.nr_dowodu)=(Noclegi.nr_dowodu))\nORDER BY (data_wyjazdu-data_przyjazdu) DESC;\nW MySQLu do obliczenia liczby noclegów należy użyć funkcji TO_DAYS:\nSELECT imie, nazwisko, to_days(data_wyjazdu)-to_days(data_przyjazdu) AS liczba_nocy\nFROM Klienci, Noclegi\nWHERE ((Klienci.nr_dowodu)=( Noclegi.nr_dowodu))\nORDER BY liczba_nocy DESC;\nAby wykonać zestawienie gości z Krakowa, którzy korzystali z parkingu, należy utworzyć\nzapytanie odnoszące się do dwóch tabel: Klienci i Noclegi. Informacja o korzystaniu gościa\nz parkingu zapisana została w kolumnie „usługi” na trzeciej pozycji, licząc od strony lewej.\nCyfra oznaczająca liczbę parkowań powinna być różna od zera. Jeżeli kolumna „usługi”\nprzechowuje dane typu char, to wyodrębnienie informacji o parkowaniu można uzyskać za\npomocą funkcji MID(nazwa_kolumny,pierwszy_znak,liczba_znaków).\nJeżeli ktoś preferuje pracę w arkuszu kalkulacyjnym, może zastosować funkcję\nFRAGMENT.TEKSTU(tekst,liczba_początkowa,liczba_znaków). Dodatkowym warunkiem\njest pochodzenie gości z Krakowa (tabela Klienci, kolumna miejscowość).\nZapytanie b:\nSELECT klienci.nr_dowodu, imie, nazwisko\nFROM Klienci, Noclegi\nWHERE Klienci.nr_dowodu = Noclegi.nr_dowodu AND Miejscowosc='Krakow' AND\nMid(uslugi,3,1)<>'0'\nGROUP BY klienci.nr_dowodu, imie, nazwisko;\nW poleceniu SELECT obok imienia i nazwiska dodano pole nr_dowodu, które jednoznacznie\nidentyfikuje klienta, aby wykluczyć pominięcie osób o takim samym imieniu i nazwisku.\nW celu utworzenia listy miejscowości, z których co najmniej 15 różnych osób nocowało choć\nraz w hotelu Panorama, należy utworzyć zapytanie pomocnicze w wyniku którego otrzymamy\nzestawienie numerów dowodów osobistych (z tabeli Noclegi) oraz miejscowości (z tabeli\nKlienci). Dzięki grupowaniu otrzymamy zestawienie bez powtórzeń (czyli noclegi różnych\nosób).\nZapytanie c:\nSELECT Noclegi.nr_dowodu, Klienci.miejscowosc\nFROM Noclegi, Klienci\nWHERE ((Noclegi.nr_dowodu)=(Klienci.nr_dowodu))\nGROUP BY Noclegi.nr_dowodu, Klienci.miejscowosc;\n70 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015\nKorzystając z wyników pomocniczego zapytania, policzymy miejscowości i wypiszemy tylko\nte, które występowały w zestawieniu pomocniczym przynajmniej 15 razy (HAVING\ncount(*)>=15). Na koniec należy je uporządkować alfabetycznie (ORDER BY miejscowość).\nKwerenda c1:\nSELECT miejscowosc,\nFROM c\nGROUP BY miejscowosc\nHAVING count(*)>=15\nORDER BY miejscowosc;\nAby podać kwotę uzyskaną z tytułu wynajmu pokoi, należy w pierwszej kolejności dla każdego\nidentyfikatora noclegu obliczyć iloczyn liczby nocy i ceny pojedynczego noclegu\nw wynajmowanym pokoju.\nKwerenda d:\nSELECT id_noc, (to_days(data_wyjazdu)-to_days(data_przyjazdu))*cena AS cena_noclegow\nFROM Pokoje, Noclegi\nWHERE Pokoje.nr_pokoju=Noclegi.nr_pokoju;\nPo zsumowaniu wartości wszystkich noclegów otrzymamy kwotę uzyskaną z tytułu wynajmu\npokoi:\nKwerenda d1:\nSELECT Sum(cena_noclegow) AS Za_noclegi\nFROM d;\nAby obliczyć kwotę uzyskaną z opłat za korzystanie przez gości z dodatkowych usług, należy\ndla każdego identyfikatora noclegu wyodrębnić liczbę wykorzystanych usług i pomnożyć\nprzez cenę tej usługi. Funkcja VAL zamienia wartość typu char na wartość typu int.\nW MySQLu będzie to funkcja CAST.\nKwerenda d2:\nSELECT Sum(20*Val(Mid(uslugi,1,1))) AS sniadanie,\nSum(30*Val(Mid(uslugi,2,1))) AS basen,\nSum(15*Val(Mid(uslugi,3,1))) AS parking,\nSum(35*Val(Mid(uslugi,4,1))) AS czyszczenie\nFROM Noclegi;\nKwerenda d2:\nSELECT sniadanie+basen+parking+czyszczenie AS Za_uslugi\nFROM d2;\nW ostatnim poleceniu należy podać numery pokoi o podwyższonym standardzie, z których\nnigdy nie korzystali goście z Krakowa. W tym celu zostało utworzone podzapytanie dające\nw wyniku numery pokoi o podwyższonym standardzie w których byli goście z Krakowa,\na następnie pytanie zewnętrzne: wybierz numery pokoi o podwyższonym standardzie z tabeli\npokoje nie występujące w zestawieniu będącym wynikiem podzapytania.\nKwerenda e:\nSELECT Pokoje.nr_pokoju\nFROM pokoje\nWHERE standard='W' AND pokoje.nr_pokoju NOT IN\n(SELECT Noclegi.nr_pokoju\nFROM Noclegi,Pokoje, Klienci\nPrzykładowe zadania z rozwiązaniami 71\nWHERE Klienci.nr_dowodu = Noclegi.nr_dowodu AND Noclegi.nr_pokoju =\nPokoje.nr_pokoju\nAND standard='W' AND miejscowosc='krakow'\nGROUP BY Noclegi.nr_pokoju);","answer":null,"answer_text":null,"solution":null,"image":"img/informator-maturalny-informatyka-2015/zad-20.webp","solution_image":null,"topics":null,"page_from":65,"source":"ocr","answer_source":null,"answer_text_source":null,"solution_source":null,"text_source":"ocr","source_label":"Informatyka · Informator maturalny · 2015","subject_label":"Informatyka","category_label":"Informator maturalny","text_html":"<p>Zadanie 20. Hotel Panorama (0-10)<br>Dane są trzy pliki tekstowe o nazwach: klienci.txt; pokoje.txt; noclegi.txt.<br>Zawierają one informacje na temat zrealizowanych usług hotelowych hotelu Panorama<br>w okresie wakacyjnym, tzn. zameldowanie gościa nastąpiło od 1.07.2013 do 31.08.2013.<br>Pierwszy wiersz każdego z plików jest wierszem nagłówkowym, a dane w wierszach<br>rozdzielone są znakami tabulacji.<br>Plik o nazwie klienci.txt zawiera informacje o gościach hotelu. W każdym wierszu<br>pliku znajdują się następujące dane: numer dowodu osobistego gościa hotelu (nr_dowodu),<br>nazwisko (nazwisko), imię (imie) i miejsce zamieszkania (miejscowosc).<br>Przykład:<br>nr_dowodu nazwisko imie<br>miejscowosc<br>SAS253401 Pastuszak Joanna<br>Szczecin<br>UNC608098 Siudut<br>Anna<br>Jaworzno<br>NMZ567271 Konopka<br>Kamil<br>Tarnowskie Gory<br>Plik o nazwie pokoje.txt zawiera w każdym wierszu: numer pokoju (nr_pokoju),<br>maksymalną liczbę osób, które mogą nocować w pokoju (liczba_osob), standard pokoju<br>(standard), gdzie S - oznacza pokój standardowy, W - pokój o podwyższonym<br>standardzie oraz cenę wynajęcia pokoju na jedną dobę (cena).<br>Przykład:<br>nr_pokoju liczba_osob<br>standard cena<br>101<br>2<br>S<br>220<br>102<br>2<br>S<br>220<br>103<br>2<br>S<br>220<br>Plik o nazwie noclegi.txt zawiera w każdym wierszu: identyfikator noclegu (id_noc),<br>datę przyjazdu gościa hotelu (data_przyjazdu), datę wyjazdu gościa (data_wyjazdu),<br>numer dowodu osobistego gościa korzystającego z danego noclegu (nr_dowodu), numer<br>pokoju (nr_pokoju), oraz dodatkowe usługi, z których skorzystał gość podczas noclegu<br>(uslugi).<br>Przykład:<br>id_noc data_przyjazdu<br>data_wyjazdu<br>nr_dowodu<br>nr_pokoju<br>uslugi<br>198<br>2013-07-10<br>2013-07-12<br>JAA932190<br>501<br>2020<br>199<br>2013-07-10<br>2013-07-11<br>SIS395155<br>108<br>1010<br>206<br>2013-07-10<br>2013-07-13<br>RMS452742<br>113<br>0030<br>Korzystanie z dodatkowych usług odnotowane jest w postaci liczb jednocyfrowych.<br>Na pierwszej pozycji od lewej strony odnotowana jest liczba konsumowanych śniadań (cena<br>jednostkowa 20 zł), na drugiej pozycji - liczba wejść na basen (cena jednostkowa 30 zł),<br>na trzeciej - parking (cena jednostkowa 15 zł), a na ostatniej pozycji - czyszczenie ubrania<br>(cena jednostkowa 35 zł).<br>Na przykład zapis:<br>2020 - oznacza, że gość 2 razy jadł śniadanie w hotelu (2*20 zł), nie korzystał z basenu,<br>przez 2 doby parkował samochód na hotelowym parkingu (2*15 zł) oraz nie oddawał ubrania<br>do czyszczenia. W związku z tym do kosztu noclegu dopisuje się koszt dodatkowych usług<br>w wysokości 70 zł.<br>66 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015<br>1130 - oznacza, że gość zjadł jeden raz śniadanie w hotelu (1*20 zł), jeden raz skorzystał<br>z basenu (1<em>30 zł) i przez 3 doby parkował samochód na hotelowym parkingu (3</em>15 zł) oraz<br>nie oddawał ubrania do czyszczenia. Gościowi do kosztu noclegu dopisuje się koszt<br>dodatkowych usług w wysokości 95 zł.<br>Uwaga: Żadna z usług nie była zamawiana więcej niż 9 razy.<br>Korzystając z danych zawartych w tych plikach oraz z dostępnych narzędzi informatycznych,<br>wykonaj poniższe polecenia. Każdą odpowiedź umieść w pliku wyniki.txt, poprzedzając<br>ją oznaczeniem odpowiedniego podpunktu od a) do e).<br>a) Podaj imię i nazwisko gościa, który skorzystał z największej liczby noclegów podczas<br>jednorazowego pobytu w hotelu Panorama. Podaj liczbę tych noclegów.<br>b) Podaj zestawienie (imię i nazwisko) osób z Krakowa goszczących w hotelu Panorama,<br>którzy korzystali z parkingu.<br>c) Utwórz listę miejscowości, z których co najmniej 15 różnych osób nocowało choć raz<br>w hotelu Panorama. Zestawienie posortuj alfabetycznie.<br>d) Podaj kwotę uzyskaną z tytułu wynajmu pokoi oraz kwotę uzyskaną z opłat za korzystanie<br>przez gości z dodatkowych usług w okresie od 1.07.2013 do 31.08.2013.<br>e) Podaj numery pokoi o podwyższonym standardzie, z których nigdy nie korzystali goście<br>z Krakowa.<br>Do oceny oddajesz plik(i) o nazwie(ach) ,<br>tu wpisz nazwę(y) pliku(ów)<br>zawierający(e) komputerową(e) realizację(e) Twoich obliczeń oraz plik tekstowy o nazwie<br>wyniki.txt z odpowiedziami do podpunktów a), b), c), d), e).<br>Wymagania ogólne<br>II. Wyszukiwanie, gromadzenie i przetwarzanie<br>informacji z różnych źródeł; opracowywanie<br>za pomocą komputera: rysunków, tekstów danych<br>liczbowych, motywów, animacji, prezentacji<br>multimedialnych.<br>Wymagania szczegółowe</p>\n<ol><li>Wyszukiwanie, gromadzenie, selekcjonowanie,</li></ol>\n<p>przetwarzanie i wykorzystywanie informacji,<br>korzystanie z różnych źródeł i sposobów zdobywania<br>informacji.<br>Zdający:</p>\n<ol><li>projektuje relacyjną bazę danych z zapewnieniem</li></ol>\n<p>integralności danych,</p>\n<ol><li>stosuje metody wyszukiwania i przetwarzania</li></ol>\n<p>informacji w relacyjnej bazie danych; tworzy<br>aplikację bazodanową, wykorzystującą język zapytań,<br>kwerendy, raporty; zapewnia integralność danych<br>na poziomie pól, tabel, relacji.<br>Przykładowe zadania z rozwiązaniami 67<br>Schemat punktowania<br>Podpunkt<br>Czynność<br>Liczba<br>punktów<br>za<br>podpunkt<br>Liczba<br>punktów<br>za<br>zadanie<br>a<br>Za poprawną odpowiedź - 2 punkty,<br>w tym za:<br> imię i nazwisko - 1 punkt.<br> liczbę noclegów - 1 punkt.<br>2<br>10<br>b<br>Za poprawną odpowiedź - 2 punkty.<br>W przypadku powtórzeń - 1 punkt.<br>2<br>c<br>Za poprawną odpowiedź - 2 punkty,<br>w tym za:<br> podanie listy - 1 punkt.<br> za prawidłowe posortowanie - 1 punkt.<br>2<br>d<br>Za poprawną odpowiedź - 2 punkty,<br>w tym za:<br> kwotę uzyskaną z tytułu wynajmu pokoi - 1 punkt.<br> kwotę uzyskaną z opłat za korzystania przez gości<br>z dodatkowych usług - 1 punkt.<br>2<br>e<br>Za poprawną odpowiedź - 2 punkty.<br>W przypadku braku jednego numeru lub wystąpienia<br>jednego numeru nieprawidłowego - 1 punkt.<br>2<br>Zadanie 20. Hotel Panorama (0-10) - rozwiązanie<br>Plik zawierający rozwiązanie znajdują się w folderze HOTEL.<br>Komentarz<br>Zadanie Hotel Panorama należy do grupy zadań, które mogą być rozwiązywane narzędziami<br>bazodanowymi lub z wykorzystaniem arkusza kalkulacyjnego. Baza składa się z trzech tabel:<br>klienci (klucz główny - nr_dowodu), pokoje (klucz główny - nr_pokoju) i noclegi (klucz<br>główny - Id_noclegu). Tabela klienci połączona zostanie z tabelą noclegi relacją typu „jeden<br>do wielu”, podobnie tabelę pokoje z tabelą noclegi łączy relacja typu „jeden do wielu”.<br>68 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015<br>W Accessie import plików z danymi jest prosty. Ambitni maturzyści mogą utworzyć bazę<br>i zapytania w języku SQL:<br>-- utworzenie bazy danych hotel<br>create database hotel;<br>-- ustawienie bazy hotel jako domyślnej<br>use hotel;<br>-- utworzenie tabeli noclegi<br>CREATE TABLE <code>noclegi</code> (<br><code>id_noc</code> int NOT NULL,<br><code>data_przyjazdu</code> date NOT NULL,<br><code>data_wyjazdu</code> date NOT NULL,<br><code>nr_dowodu</code> char(9) NOT NULL,<br><code>nr_pokoju</code> int NOT NULL,<br><code>uslugi</code> int(1) NOT NULL,<br>PRIMARY KEY (<code>id_noc</code>)<br>);<br>-- zaladowanie danych do tabeli noclegi<br>LOAD DATA INFILE<br>&quot;C:\\\\Dane_hotel\\\\noclegi.csv&quot; INTO TABLE <code>noclegi</code> FIELDS<br>TERMINATED BY &#x27;,&#x27; ENCLOSED BY &#x27;&quot;&#x27; ESCAPED BY &#x27;\\\\&#x27; LINES<br>TERMINATED BY &#x27;\\n&#x27; (id_noc,data_przyjazdu,data_wyjazdu,nr_dowodu,nr_pokoju,uslugi);<br>-- utworzenie tabeli klienci<br>CREATE TABLE <code>klienci</code> (<br><code>nr_dowodu</code> char(9) NOT NULL,<br><code>nazwisko</code> char(20) NOT NULL,<br><code>imie</code> char(20) NOT NULL,<br><code>miejscowosc</code> char(20) NOT NULL,<br>PRIMARY KEY (<code>nr_dowodu</code>)<br>);<br>-- zaladowanie danych do tabeli klienci<br>LOAD DATA INFILE<br>&quot;C:\\\\Dane_hotel\\\\klienci.csv&quot; INTO TABLE <code>klienci</code> FIELDS<br>TERMINATED BY &#x27;,&#x27; ENCLOSED BY &#x27;&quot;&#x27; ESCAPED BY &#x27;\\\\&#x27; LINES<br>TERMINATED BY &#x27;\\n&#x27; (nr_dowodu,nazwisko,imie,miejscowosc);<br>-- utworzenie tabeli pokoje<br>CREATE TABLE <code>pokoje</code> (<br><code>nr_pokoju</code> int(11) NOT NULL,<br><code>liczba_osob</code> int(11) NOT NULL,<br><code>standard</code> char(1) NOT NULL,<br><code>cena</code> int(11) NOT NULL,<br>PRIMARY KEY (<code>nr_pokoju</code>)<br>);<br>Przykładowe zadania z rozwiązaniami 69<br>-- zaladowanie danych do tabeli pokoje<br>LOAD DATA INFILE<br>&quot;C:\\\\Dane_hotel\\\\pokoje.csv&quot; INTO TABLE <code>pokoje</code> FIELDS<br>TERMINATED BY &#x27;,&#x27; ENCLOSED BY &#x27;&quot;&#x27; ESCAPED BY &#x27;\\\\&#x27; LINES<br>TERMINATED BY &#x27;\\n&#x27; (nr_pokoju,liczba_osob,standard,cena);<br>W poleceniu a) należy podać imię i nazwisko gościa, który skorzystał z największej liczby<br>noclegów podczas jednorazowego pobytu w hotelu Panorama oraz liczbę tych noclegów. Aby<br>podać odpowiedź na tak postawione pytanie, należy obliczyć liczbę nocy, odejmując od daty<br>wyjazdu datę przyjazdu, znaleźć maksimum i odpowiadającą temu maksimum osobę.<br>Zapytanie a:<br>SELECT Klienci.imie, Klienci.nazwisko, (data_wyjazdu-data_przyjazdu) AS Liczba_nocy<br>FROM Klienci, Noclegi<br>WHERE ((Klienci.nr_dowodu)=(Noclegi.nr_dowodu))<br>ORDER BY (data_wyjazdu-data_przyjazdu) DESC;<br>W MySQLu do obliczenia liczby noclegów należy użyć funkcji TO_DAYS:<br>SELECT imie, nazwisko, to_days(data_wyjazdu)-to_days(data_przyjazdu) AS liczba_nocy<br>FROM Klienci, Noclegi<br>WHERE ((Klienci.nr_dowodu)=( Noclegi.nr_dowodu))<br>ORDER BY liczba_nocy DESC;<br>Aby wykonać zestawienie gości z Krakowa, którzy korzystali z parkingu, należy utworzyć<br>zapytanie odnoszące się do dwóch tabel: Klienci i Noclegi. Informacja o korzystaniu gościa<br>z parkingu zapisana została w kolumnie „usługi” na trzeciej pozycji, licząc od strony lewej.<br>Cyfra oznaczająca liczbę parkowań powinna być różna od zera. Jeżeli kolumna „usługi”<br>przechowuje dane typu char, to wyodrębnienie informacji o parkowaniu można uzyskać za<br>pomocą funkcji MID(nazwa_kolumny,pierwszy_znak,liczba_znaków).<br>Jeżeli ktoś preferuje pracę w arkuszu kalkulacyjnym, może zastosować funkcję<br>FRAGMENT.TEKSTU(tekst,liczba_początkowa,liczba_znaków). Dodatkowym warunkiem<br>jest pochodzenie gości z Krakowa (tabela Klienci, kolumna miejscowość).<br>Zapytanie b:<br>SELECT klienci.nr_dowodu, imie, nazwisko<br>FROM Klienci, Noclegi<br>WHERE Klienci.nr_dowodu = Noclegi.nr_dowodu AND Miejscowosc=&#x27;Krakow&#x27; AND<br>Mid(uslugi,3,1)&lt;&gt;&#x27;0&#x27;<br>GROUP BY klienci.nr_dowodu, imie, nazwisko;<br>W poleceniu SELECT obok imienia i nazwiska dodano pole nr_dowodu, które jednoznacznie<br>identyfikuje klienta, aby wykluczyć pominięcie osób o takim samym imieniu i nazwisku.<br>W celu utworzenia listy miejscowości, z których co najmniej 15 różnych osób nocowało choć<br>raz w hotelu Panorama, należy utworzyć zapytanie pomocnicze w wyniku którego otrzymamy<br>zestawienie numerów dowodów osobistych (z tabeli Noclegi) oraz miejscowości (z tabeli<br>Klienci). Dzięki grupowaniu otrzymamy zestawienie bez powtórzeń (czyli noclegi różnych<br>osób).<br>Zapytanie c:<br>SELECT Noclegi.nr_dowodu, Klienci.miejscowosc<br>FROM Noclegi, Klienci<br>WHERE ((Noclegi.nr_dowodu)=(Klienci.nr_dowodu))<br>GROUP BY Noclegi.nr_dowodu, Klienci.miejscowosc;<br>70 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015<br>Korzystając z wyników pomocniczego zapytania, policzymy miejscowości i wypiszemy tylko<br>te, które występowały w zestawieniu pomocniczym przynajmniej 15 razy (HAVING<br>count(*)&gt;=15). Na koniec należy je uporządkować alfabetycznie (ORDER BY miejscowość).<br>Kwerenda c1:<br>SELECT miejscowosc,<br>FROM c<br>GROUP BY miejscowosc<br>HAVING count(*)&gt;=15<br>ORDER BY miejscowosc;<br>Aby podać kwotę uzyskaną z tytułu wynajmu pokoi, należy w pierwszej kolejności dla każdego<br>identyfikatora noclegu obliczyć iloczyn liczby nocy i ceny pojedynczego noclegu<br>w wynajmowanym pokoju.<br>Kwerenda d:<br>SELECT id_noc, (to_days(data_wyjazdu)-to_days(data_przyjazdu))*cena AS cena_noclegow<br>FROM Pokoje, Noclegi<br>WHERE Pokoje.nr_pokoju=Noclegi.nr_pokoju;<br>Po zsumowaniu wartości wszystkich noclegów otrzymamy kwotę uzyskaną z tytułu wynajmu<br>pokoi:<br>Kwerenda d1:<br>SELECT Sum(cena_noclegow) AS Za_noclegi<br>FROM d;<br>Aby obliczyć kwotę uzyskaną z opłat za korzystanie przez gości z dodatkowych usług, należy<br>dla każdego identyfikatora noclegu wyodrębnić liczbę wykorzystanych usług i pomnożyć<br>przez cenę tej usługi. Funkcja VAL zamienia wartość typu char na wartość typu int.<br>W MySQLu będzie to funkcja CAST.<br>Kwerenda d2:<br>SELECT Sum(20*Val(Mid(uslugi,1,1))) AS sniadanie,<br>Sum(30*Val(Mid(uslugi,2,1))) AS basen,<br>Sum(15*Val(Mid(uslugi,3,1))) AS parking,<br>Sum(35*Val(Mid(uslugi,4,1))) AS czyszczenie<br>FROM Noclegi;<br>Kwerenda d2:<br>SELECT sniadanie+basen+parking+czyszczenie AS Za_uslugi<br>FROM d2;<br>W ostatnim poleceniu należy podać numery pokoi o podwyższonym standardzie, z których<br>nigdy nie korzystali goście z Krakowa. W tym celu zostało utworzone podzapytanie dające<br>w wyniku numery pokoi o podwyższonym standardzie w których byli goście z Krakowa,<br>a następnie pytanie zewnętrzne: wybierz numery pokoi o podwyższonym standardzie z tabeli<br>pokoje nie występujące w zestawieniu będącym wynikiem podzapytania.<br>Kwerenda e:<br>SELECT Pokoje.nr_pokoju<br>FROM pokoje<br>WHERE standard=&#x27;W&#x27; AND pokoje.nr_pokoju NOT IN<br>(SELECT Noclegi.nr_pokoju<br>FROM Noclegi,Pokoje, Klienci<br>Przykładowe zadania z rozwiązaniami 71<br>WHERE Klienci.nr_dowodu = Noclegi.nr_dowodu AND Noclegi.nr_pokoju =<br>Pokoje.nr_pokoju<br>AND standard=&#x27;W&#x27; AND miejscowosc=&#x27;krakow&#x27;<br>GROUP BY Noclegi.nr_pokoju);</p>","solutions":[]}