Przed przystąpieniem do rozwiązywania zadania typu maturalnego, dotyczącego baz danych, trzeba zaimportować dane zapisane w kilku plikach .txt do wybranego programu, np. Microsoft Access lub LibreOffice Base. Opis importu danych został przedstawiony w e‑materiale: Podstawowe operacje na bazach danych, etap IIPjmYte1O1Podstawowe operacje na bazach danych, etap II.
W przykładach zaprezentowanych w tym e‑materiale potrzebne dane są już zaimportowane i gotowe do pobrania w plikach programów Microsoft Access oraz LibreOffice Base.
Zadanie 1. Loty pasażerskie
Zadanie zostało opublikowane jako zadanie 107 przez Centralną Komisję Egzaminacyjną w zbiorze zadań: „Egzamin maturalny. Informatyka. Poziom rozszerzony. Zbiór zadań”, CKE, 2015.
W plikach: Loty.txt, Pasazerowie.txt, Bilety.txt znajdują się informacje na temat lotów, pasażerów i biletów lotniczych zakupionych przez nich w biurze podróży w drugim kwartale 2014 roku. Pierwszy wiersz każdego z plików jest wierszem nagłówkowym, a dane w wierszach rozdzielone są znakami tabulacji.
W pliku Loty.txt znajduje się 1027 wierszy z informacjami o lotach pasażerskich: numerem identyfikacyjnym (kolumna id_lotu), miejscem docelowym (kolumna miejsce_docelowe), datą wylotu (kolumna data) oraz godziną wylotu (kolumna godzina).
Przykład
id_lotu
miejsce_docelowe
data
godzina
37
Warszawa
2014‑04‑04
12:05
38
Zurych
2014‑04‑04
13:50
39
Londyn Stansed
2014‑04‑04
18:10
Plik o nazwie Pasazerowie.txt zawiera 302 wiersze z informacjami na temat pasażerów, którzy kupili bilety. Są to: identyfikator pasażera (kolumna id_pasazera), jego nazwisko (kolumna nazwisko), imię (kolumna imie), ulica, przy której mieszka, wraz z numerem domu (kolumna adres), miejscowość (kolumna miejscowosc) oraz telefon (kolumna telefon).
Przykład
id_pasazera
nazwisko
imie
adres
miejscowosc
telefon
202
Antczak
Edyta
Czerwcowa 40/6
Walbrzych
735223964
203
Karpik
Hanna
Drewniana 8/6
Dzierzoniow
312271637
W pliku Bilety.txt znajduje się 2251 wierszy z informacjami na temat zakupionych przez pasażerów biletów: numerem identyfikacyjnym lotu (kolumna id_lotu) oraz identyfikatorem pasażera (kolumna id_pasazera).
Przykład
id_lotu
id_pasazera
142
100
161
420
170
161
171
155
Wykorzystując dane zawarte w tych plikach i dostępne narzędzia informatyczne, rozwiąż poniższe zadania. Odpowiedzi do poszczególnych zadań zapisz w pliku tekstowym o nazwie Wyniki_loty_pasazerskie.txt. Wyniki do każdego zadania poprzedź numerem oznaczającym to zadanie.
Do oceny oddajesz:
plik tekstowy Wyniki_loty_pasazerskie.txt zawierający odpowiedzi do poszczególnych zadań (odpowiedź do każdego zadania powinna być poprzedzona jego numerem)
Podaj trzy miejsca docelowe, do których było najwięcej wylotów. W zestawieniu podaj miejsce docelowe oraz liczbę dni w których odbyły się wyloty.
Zadanie 1.2
Utwórz zestawienie, w którym podasz nazwiska i imiona pasażerów, którzy zakupili więcej niż 15 biletów, oraz liczbę biletów kupionych przez każdego z nich.
Zadanie 1.3
Utwórz zestawienie, w którym dla każdego numeru miesiąca z badanego okresu podasz liczbę biletów kupionych przez osoby z Wrocławia (Wroclaw).
Zadanie 1.4
Utwórz zestawienie, w którym podasz imiona i nazwiska pasażerów, którzy kupili bilety do dowolnego lotniska w Londynie na samoloty, których wyloty odbyły się między 8:00 a 10:00. Zestawienie posortuj rosnąco według kolejności alfabetycznej nazwisk.
Tabele Pasazerowie i Bilety oraz Loty i Bilety są powiązane relacjami typu jeden do wielu:
R1DpbPT2ULvmq
Ilustracja przedstawia trzy prostokątne obszary o nazwie Pasażerowie, Bilety i Loty. Na liście Pasażerów są kolejno w dół: id_pasazera, nazwisko, imię, adres, miejscowość, tel. Na liście Biletów są kolejno: identyfikator, id_lotu, id_pasazera. Na liście Lotów są: id_lotu, miejsce_docelowe, data, godzina.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Rozwiązanie zadania 1.1
Aby wyszukać trzy miejsca docelowe, do których wyloty odbyły się w największą liczbę dni, wykorzystamy dane zawarte w tabeli Loty.
Utwórzmy najpierw kwerendę pomocniczą, dzięki niej wyświetlimy wszystkie miejsca docelowe odbytych lotów wraz z datami. W widoku projektu z tabeli Loty wybieramy kolejno pole miejsce_docelowe oraz pole data, ustalając w obu przypadkach sortowanie rosnące:
REi8iXIWOn2hW
Ilustracja przedstawia prostokąt, w którym zapisano: Loty, a poniżej: id_lotu, miejsce_docelowe, data, godzina. Poniżej są dwie kolumny. W polu obok nazwy: Pole wpisano miejsce_docelowe, następnie w kolejnym polu obok wpisano data. Poniżej w polu obok nazwy Tabela wpisano Loty i obok ponownie loty. W komórkach dotyczących sortowania wpisano rosnąco. W komórkach o nazwie Pokaż, zaznaczono ptaszki.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Po uruchomieniu kwerendy otrzymujemy tabelę wynikową z 1027 rekordami:
RwKD5BKPUIdkk
Ilustracja przedstawia tabelę. W kolumnie pierwszej wpisano miejsca_docelowe. Tu Barcelona. W kolumnie drugiej wpisano datę. Wiersze z tymi samymi datami wraz z nazwą Barcelona otoczono zieloną ramką. Na dole ilustracji pokazano, że to pierwszy rekord z tysiąca dwudziestu siedmiu.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Ponieważ niektóre wyloty do określonej lokalizacji (np. zaznaczone na powyższym zrzucie) odbyły się więcej niż jednokrotnie danego dnia, a w zadaniu nie powinniśmy zliczać powtórzeń – musimy znaleźć sposób na ich wyeliminowanie. Możemy w tym celu wykorzystać słowo kluczowe DISTINCTDISTINCTDISTINCT, które umieszczone bezpośrednio po poleceniu SELECT w zapisie zapytania w języku SQL pozwoli uzyskać unikalne rekordy:
SELECT DISTINCT Loty.miejsce_docelowe, Loty.data
FROM Loty
ORDER BY Loty.miejsce_docelowe, Loty.data
Po uruchomieniu kwerendy otrzymujemy tabelę złożoną z 983 rekordów, ponieważ teraz każdy wylot dotyczy już tylko jednej daty:
RkxQ564pTqnGg
Ilustracja przedstawia tabelę. W kolumnie pierwszej wpisano miejsca_docelowe. Tu Barcelona. W kolumnie drugiej wpisano datę. Na dole ilustracji pokazano, że to pierwszy rekord z dziewięćset osiemdziesięciu trzech. Nazwa Barcelona w pierwszej komórce jest na czarnym tle. Pierwsza data jest na niebieskim tle.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Ten sam efekt, który otrzymaliśmy przy modyfikacji kwerendy w widoku SQL, możemy również uzyskać za pomocą grupowania:
R1Q6VxzFxgPfM
Ilustracja przedstawia prostokąt, w którym zapisano: Loty, a poniżej: id_lotu, miejsce_docelowe, data, godzina. Poniżej są dwie kolumny. W polu obok nazwy: Pole wpisano miejsce_docelowe, następnie w kolejnym polu obok wpisano data. Poniżej w polu obok nazwy Tabela wpisano Loty i obok ponownie loty. W komórkach dotyczących Sumy wpisano Grupuj według. W komórkach o nazwie Pokaż, zaznaczono ptaszki.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Teraz należy przygotować zestawienie z podsumowaniem liczby wylotów, które odbyły się do określonej lokalizacji. Możemy w tym celu bieżącą kwerendę zapisać i potraktować jako źródło danych dla nowej kwerendy, w której za pomocą funkcji agregującej Policz, zastosowanej w kolumnie data (z sortowaniem malejącym), zostaną zliczone różne dni wylotów do określonych miejsc docelowych:
Rucb1Btp7sq7f
Ilustracja przedstawia prostokąt, w którym zapisano: zadanie‑1-pom, a poniżej: miejsca_docelowe, data. Poniżej są dwie kolumny. W polu obok nazwy: Pole wpisano miejsce_docelowe, następnie w kolejnym polu obok wpisano data. Poniżej w polu obok nazwy Tabela wpisano zadanie‑1-pom i obok ponownie zadanie‑1-pom. W komórkach dotyczących Sumy wpisano Grupuj według. W komórkach o nazwie Pokaż, zaznaczono ptaszki.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Po uruchomieniu kwerendy otrzymujemy tabelę składającą się z 30 rekordów tworzących zestawienie miejsc docelowych wylotów uporządkowanych w kolejności od najliczniejszych:
RtlRzHrEcRnWk
Ilustracja przedstawia tabelę. W pierwszej kolumnie jest miejsce_docelowe, w drugiej jest PoliczOfdata. W kolumnie pierwszej są nazwy europejskich miast, lotnisk. W kolumnie drugiej są wartości liczbowe. Na dole tabeli zaznaczono pierwszy rekord z trzydziestu.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Ponieważ w zadaniu chodzi o trzy miejsca, do których wyloty odbyły się w największą liczbę dni, w widoku projektu precyzujemy kwerendę, wybierając opcję Zwróć z wartością 3:
R1SR7iFov6mWp
Ilustracja przedstawia widok programu z prostokątem, w którym zapisano: zadanie‑1-pom, a poniżej: miejsca_docelowe, data. Poniżej są dwie kolumny. W polu obok nazwy: Pole wpisano miejsce_docelowe, następnie w kolejnym polu obok wpisano data. Poniżej w polu obok nazwy Tabela wpisano zadanie‑1-pom i obok ponownie zadanie‑1-pom. W komórkach dotyczących Sumy wpisano Grupuj według oraz Policz. W jednej z komórek kolumny dotyczącej Sortowania wpisano Malejąco. W komórkach o nazwie Pokaż, zaznaczono ptaszki. We wstążce zaznaczono Zwróć 3.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Po uruchomieniu kwerendy otrzymujemy tabelę składającą się z trzech rekordów prezentujących miejsca docelowe, do których wyloty odbyły się w największą liczbę dni:
RAIEQdwBudImn
Ilustracja przedstawia fragment tabeli. W pierwszej kolumnie jest miejsce_docelowe, w drugiej policzOfdata. Są trzy wiersze. Pierwsza komórka z nazwą Warszawa jest zaznaczona na czarno. Pierwsza cyfra do dotycząca Warszawa w drugiej kolumnie to 83. Na dole pokazano rekord jeden z trzech.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Rozwiązanie zadania 1.2
W celu przygotowania zestawienia zawierającego nazwiska i imiona pasażerów, którzy zakupili więcej niż 15 biletów, oraz liczbę biletów kupionych przez każdego z nich, wykorzystamy dane zawarte w tabelach Pasażerowie oraz Bilety.
Projektujemy kwerendę, w której z tabeli Pasazerowie wybieramy kolejno pole id_pasażera, pole nazwisko oraz pole imie (wybór pola id_pasażera jest konieczny, ponieważ w zadaniu nie podano informacji, że w tabeli Pasazerowie nie występuje dwóch/dwoje lub więcej pasażerów o tym samym imieniu i nazwisku), natomiast z tabeli Bilety – pole identyfikator. Grupujemy dane według pola id_pasażera, pola nazwisko oraz pola imie, a także stosujemy funkcję Policz dla pola identyfikator z ustalonym kryterium >15:
RlWpz8H4IWwG0
Ilustracja przedstawia dwa prostokątne obszary o nazwie Pasażerowie, Bilety. Na liście Pasażerów są kolejno w dół: id_pasazera, nazwisko, imię, adres, miejscowość, tel. Na liście Biletów są kolejno: identyfikator, id_lotu, id_pasazera. Poniżej jest tabela. W opcji Pole w kolejnych komórkach, w czterech kolumnach jest poziomo: id_pasazera, nazwisko, imie, identyfikator. W opcji Tabela są kolejno w poziomie komórki: pasazerowie, pasazerowie, pasazerowie, bilety. W opcji Suma w komórkach poziomo są kolejno: grupuj według, grupuj według, grupuj według, policz. W opcji: Pokaż zaznaczono ptaszki. W Kryteriach w komórce czwartej kolumny jest >15.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
W rezultacie otrzymujemy tabelę składającą się z rekordów tworzących zestawienie imion i nazwisk pasażerów, którzy zakupili więcej niż 15 biletów:
R3r2HZG9wUS3i
Ilustracja przedstawia tabelę. Ma cztery kolumny o nagłówkach: id_pasazera, nazwisko, imie, PoliczOfIdentyfikator. W pierwszej i czwartej kolumnie są cyfry. Pierwsza cyfra w id_pasazera jest na czarnym tle. Komórki z pierwszym nazwiskiem i imieniem oraz PoliczOfIdentyfikator są podświetlone na niebiesko.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Rozwiązanie zadania 1.3
Aby utworzyć zestawienie, w którym dla każdego numeru miesiąca zostanie podana liczba biletów kupionych przez osoby z Wrocławia, wykorzystamy dane zawarte w tabelach Pasazerowie, Bilety oraz Loty.
Projektując kwerendę, z tabeli Pasazerowie wybieramy pole miejscowosc, z tabeli Loty – pole data, a z tabeli Bilety - pole id_pasazera. Ponieważ potrzebujemy informacji o miesiącu, uzyskamy ją na podstawie daty za pomocą dostępnej funkcji MonthMonthMonth. Grupujemy dane według miesięcy oraz stosujemy funkcję Policz dla pola id_pasazera:
R136GSMfNQLo1
Ilustracja przedstawia trzy prostokątne obszary o nazwie Pasażerowie, Bilety i Loty. Na liście Pasażerów są kolejno w dół: id_pasazera, nazwisko, imię, adres, miejscowość, tel. Na liście Biletów są kolejno: identyfikator, id_lotu, id_pasazera. Na liście Lotów są: id_lotu, miejsce_docelowe, data, godzina. Poniżej jest tabela. W opcji Pole w kolejnych komórkach wpisano kolejno: miejscowość, Miesiąc Month([data]), id_pasazera. W opcji Tabela są kolejno w poziomie komórki: pasazerowie, pusta komórka, bilety. W opcji Suma w komórkach poziomo są kolejno: grupuj według, grupuj według, policz. W opcji: Pokaż w pierwszej kolumnie w komórce brak ptaszka, w dwóch kolejnych jest ptaszek w kwadracie. W Kryteriach w komórce pierwszej kolumny wpisano "Wrocław".
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Ważne!
Listę dostępnych funkcji w programie Microsoft Access uzyskamy poprzez skorzystanie z tzw. Konstruktora wyrażeń:
RXQ4gqoHNpSQQ
Ilustracja przedstawia pasek narzędzi. Zaznaczono opcję Konstruktor.
RUhXhb8hoLgtY
Ilustracja przedstawia okno dotyczące Konstruktora wyrażeń. Na początku jest zdanie: Wprowadź wyrażenie, aby zdefiniować obliczeniowe pole kwerendy: (Przykłady wyrażeń: [pole1] + [pole2] i [pole1]<5). Poniżej jest niezapisany obszar. Następnie są trzy sekcje: Elementy wyrażeń, w której zaznaczono Funkcje wbudowane, następnie są Kategorie wyrażeń z zaznaczoną opcją Data/godzina, ostatnia sekcja to Wartości wyrażeń z wybraną opcją Month.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Po uruchomieniu kwerendy otrzymujemy tabelę składającą się z rekordów tworzących zestawienie liczby biletów zakupionych w kolejnych miesiącach przez osoby z Wrocławia (pole miejscowosc zostało ukryte):
R4FRqLl4EhDRI
Ilustracja przedstawia tabelę. Ma dwie kolumny: Miesiąc i PoliczOfid_pasazera. W komórkach kolumn są wartości liczbowe. Na czarno podświetlono pierwszą liczbę z kolumny Miesiąc, czyli 4, oraz na niebiesko podświetlono pierwszą komórkę drugiej kolumny z liczbą 72. Na dole zaznaczono rekord pierwszy z trzech.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Rozwiązanie zadania 1.4
W celu przygotowania zestawienia zawierającego nazwiska i imiona pasażerów, którzy kupili bilety do dowolnego lotniska w Londynie na samoloty z wylotami między 8:00 a 10:00, wykorzystamy dane zawarte w tabelach Pasazerowie oraz Loty.
Projektujemy kwerendę, w której z tabeli Pasazerowie wybieramy kolejno pole nazwisko oraz pole imie, natomiast z tabeli Loty – pole godzina oraz pole miejsce_docelowe:
R1JOxPd2VDQuM
Ilustracja przedstawia trzy sekcje: Loty, Bilety, Pasazerowie. W lotach są: id_lotu, miejsce_docelowe, data, godzina. W Biletach są: identyfikator, id_lotu, id_pasazera. W sekcji Pasazerowie są: id_pasazera, nazwisko, imię, adres, miejscowość, tel. Poniżej jest tabela: w opcji Pole w kolejnych komórkach w poziomie wpisano: nazwisko, imie, godzina, miejsce docelowe. W opcji Tabela wpisano kolejno: Pasazerowie, Pasazerowie, Loty, Loty. W opcji Sortuj wpisano w komórce pierwszej kolumny: Rosnąco. W opcji Pokaż w kwadratach są ptaszki. W opcji Kryteria w trzeciej kolumnie wpisano: Between hasz08:00:00hasz And hasz10:00:00hasz. W kolejnej kolumnie jest Like 'Londyn*'.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Ważne!
Projektując kwerendę odnoszącą się do pól w tabelach Pasazerowie oraz Loty, uwzględniamy również tabelę Bilety. Tabela ta łączy rekordy reprezentujące poszczególnych klientów lotniska z rekordami oznaczającymi wyloty do konkretnych miejsc docelowych określonego dnia o ustalonej godzinie. Gdybyśmy w projektowanej kwerendzie pominęli tabelę Bilety, nie otrzymalibyśmy poprawnego wyniku, ponieważ rekordy z tabeli Pasazerowie utraciłyby połączenie z odpowiadającymi im rekordami z tabeli Loty.
Po uruchomieniu kwerendy otrzymujemy tabelę składającą się z rekordów tworzących zestawienie nazwisk i imion pasażerów, którzy kupili bilety do dowolnego lotniska w Londynie na samoloty startujące między 8:00 a 10:00:
RuCzySdBtYrt6
Ilustracja przedstawia tabelę. Ma cztery kolumny o nagłówkach: nazwisko, imię, godzina, miejsce_docelowe. W komórkach są odpowiednie dane, czyli nazwiska, imiona, godzina - tu wszędzie 09:15:00. Miejsce docelowe: wpisano lotniska Londyn Luton lub Londyn Stansed.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Tabele Pasazerowie i Bilety oraz Loty i Bilety są powiązane relacjami typu jeden do wielu:
R1XCsbkgXAcOh
Ilustracja przedstawia trzy prostokątne obszary o nazwie Pasazerowie, Bilety i Loty. Na liście Pasazerów są kolejno w dół: id_pasazera, nazwisko, imię, adres, miejscowość, tel. Na liście Biletów są kolejno: identyfikator, id_lotu, id_pasazera. Na liście Lotów są: id_lotu, miejsce_docelowe, data, godzina. Pomiędzy sekcjami są linie z cyfrą jeden.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Rozwiązanie zadania 1.1
Aby wyszukać trzy miejsca docelowe, do których wyloty odbyły się w największą liczbę dni, wykorzystamy dane zawarte w tabeli Loty.
Utwórzmy najpierw kwerendę pomocniczą, za pomocą której wyświetlimy wszystkie miejsca docelowe odbytych lotów wraz z datami. W widoku projektu z tabeli Loty wybieramy kolejno pole miejsce_docelowe oraz pole data, ustalając w obu przypadkach sortowanie rosnące:
R1OtKM1Xp1ijj
Ilustracja przedstawia sekcję Loty, wpisano: id_lotu, miejsce_docelowe, data, godzina. Poniżej jest tabela. W opcji Pole w komórkach dwóch kolumn wpisano kolejno: miejsce_docelowe, data. W opcji Tabela wpisano Loty, Loty. W Sortowaniu: rosnąco, rosnąco. W opcji Widoczny zaznaczono ptaszki.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Po uruchomieniu kwerendy otrzymujemy tabelę wynikową z 1027 rekordami:
R1K8VO02OVG1x
Ilustracja przedstawia tabelę. W kolumnie pierwszej wpisano miejsca_docelowe. Tu Barcelona. W kolumnie drugiej wpisano datę. Wiersze z tymi samymi datami wraz z nazwą Barcelona otoczono zieloną ramką. Na dole ilustracji pokazano, że to pierwszy rekord z tysiąca dwudziestu siedmiu.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Ponieważ niektóre wyloty do określonej lokalizacji (np. zaznaczone na powyższym zrzucie) odbyły się więcej niż jednokrotnie danego dnia, a w zadaniu nie powinniśmy zliczać powtórzeń, musimy znaleźć sposób na ich wyeliminowanie. Możemy w tym celu wykorzystać słowo kluczowe DISTINCTDISTINCTDISTINCT, które umieszczone bezpośrednio po poleceniu SELECT w zapisie zapytania w języku SQL pozwoli uzyskać unikalne rekordy:
SELECT DISTINCT Loty.miejsce_docelowe, Loty.data
FROM Loty
ORDER BY Loty.miejsce_docelowe, Loty.data
Po uruchomieniu kwerendy otrzymujemy tabelę złożoną z 983 rekordów, ponieważ każdy wylot dotyczy teraz już tylko jednej daty:
RsJCZ9rtyBOsS
Ilustracja przedstawia tabelę. W kolumnie pierwszej wpisano miejsca_docelowe. Tu Barcelona. W kolumnie drugiej wpisano datę. Na dole ilustracji pokazano, że to pierwszy rekord z dziewięćset osiemdziesięciu trzech. Obok komórki z pierwszą nazwą miasta jest zielona strzałka skierowana w prawo.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Ten sam efekt, który otrzymaliśmy, modyfikując kwerendę w widoku SQL, możemy również uzyskać za pomocą grupowania:
RokH489zyhucc
Ilustracja przedstawia sekcję Loty, wpisano: id_lotu, miejsce_docelowe, data, godzina. Poniżej jest tabela. W opcji Pole w komórkach dwóch kolumn wpisano kolejno: miejsce_docelowe, data. W opcji Tabela wpisano Loty, Loty. W Sortowaniu: rosnąco, rosnąco. W opcji Widoczny zaznaczono symbole ptaszków, oznaczające "tak". W opcji Funkcje wpisano Grupuj, Grupuj.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Należy teraz przygotować zestawienie z podsumowaniem liczby wylotów, które odbyły się do określonej lokalizacji. Możemy w tym celu zapisać bieżącą kwerendę i potraktować ją jako źródło danych dla nowej kwerendy, w której – za pomocą funkcji agregującej Liczba, zastosowanej w kolumnie data (z sortowaniem malejącym) – zostaną zliczone różne dni wylotów do określonych miejsc docelowych:
R1cNSsSlZs97t
Ilustracja przedstawia sekcję zad1‑pom, wpisano: miejsce_docelowe, data. Poniżej jest tabela. W opcji Pole w komórkach dwóch kolumn wpisano kolejno: miejsce_docelowe, data. W opcji Tabela wpisano zad1‑pom, zad1‑pom. W Sortowaniu w drugiej kolumnie wpisano: malejąco. W opcji Widoczny zaznaczono ptaszki jako symbole "tak". W opcji Funkcja wpisano kolejno Grupuj, Liczba.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Ważne!
Gdyby program LibreOffice Base zgłaszał problem z sortowaniem, należy je wyłączyć w kwerendzie pomocniczej:
RlVUOdJZDzmTK
Ilustracja przedstawia sekcję Loty, wpisano: id_lotu, miejsce_docelowe, data, godzina. Poniżej jest tabela. W opcji Pole w komórkach dwóch kolumn wpisano kolejno: miejsce_docelowe, data. W opcji Tabela wpisano Loty, Loty. W Sortowaniu: bez sortowania. W opcji Widoczny zaznaczono symbole ptaszków, oznaczające "tak". W opcji Funkcje wpisano Grupuj, Grupuj.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Po uruchomieniu kwerendy otrzymujemy tabelę składającą się z 30 rekordów tworzących zestawienie miejsc docelowych wylotów, uporządkowanych od najliczniejszych:
Regj8TEuvAKFX
Ilustracja przedstawia tabelę. Ma dwie kolumny: miejsce_docelowe, COUNT(SYSTEM_SUBQUERY."data"). W komórkach kolumn podano odpowiednie dane. Obok pierwszej nazwy miejscowości, którą jest Warszawa, jest zielona strzałka skierowana w prawo. Na dole zaznaczono rekord pierwszy z trzydziestu.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Ponieważ w zadaniu chodzi o trzy miejsca, do których wyloty odbyły się w największą liczbę dni, w widoku projektu precyzujemy kwerendę, wybierając opcję Ograniczenie z wartością 3:
R15wzKPaGYN1y
Ilustracja przedstawia sekcję zad1‑pom wpisano: miejsce_docelowe, data. Poniżej jest tabela. W opcji Pole w komórkach dwóch kolumn wpisano kolejno: miejsce_docelowe, data. W opcji Tabela wpisano zad1‑pom, zad1‑pom. W Sortowaniu w drugiej kolumnie wpisano: malejąco. W opcji Widoczny zaznaczono symbole ptaszków, oznaczające "tak". W opcji Funkcje wpisano Grupuj, Liczba. Ze wstążki obok ikony filtra zaznaczono cyfrę trzy.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Po uruchomieniu kwerendy otrzymujemy tabelę składającą się z trzech rekordów prezentujących miejsca docelowe, do których wyloty odbyły się w największą liczbę dni:
R1UC9gFJYs5UR
Ilustracja przedstawia tabelę. Ma dwie kolumny: miejsce_docelowe, COUNT(SYSTEM_SUBQUERY."data"). W komórkach kolumn podano odpowiednie dane. Obok pierwszej nazwy miejscowości, którą jest Warszawa, jest zielona strzałka skierowana w prawo. Na dole zaznaczono rekord pierwszy z trzech.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Rozwiązanie zadania 1.2
W celu przygotowania zestawienia zawierającego nazwiska i imiona pasażerów, którzy zakupili więcej niż 15 biletów, oraz liczbę biletów kupionych przez każdego z nich, wykorzystamy dane zawarte w tabelach Pasazerowie oraz Bilety.
Projektujemy kwerendę, w której z tabeli Pasazerowie wybieramy kolejno pole id_pasazera, pole nazwisko oraz pole imie (wybór pola id_pasazera jest konieczny, ponieważ w zadaniu nie podano informacji, że w tabeli Pasazerowie nie występuje dwóch/dwoje lub więcej pasażerów o tym samym imieniu i nazwisku), natomiast z tabeli Bilety – pole identyfikator. Grupujemy dane według pola id_pasazera, pola nazwisko oraz pola imie, a także stosujemy funkcję Liczba dla pola identyfikator z ustalonym kryterium >15:
R1OJ6oRTIsqLT
Ilustracja przedstawia dwa prostokątne obszary o nazwie Pasażerowie, Bilety. Na liście Pasazerowie są kolejno w dół: id_pasazera, nazwisko, imię, adres, miejscowość, tel. Na liście Bilety są kolejno: identyfikator, id_lotu, id_pasazera. Poniżej jest tabela. W opcji Pole w kolejnych komórkach wpisano kolejno: id_pasazera, nazwisko, imie, identyfikator. W opcji Tabela są kolejno w poziomie komórki: pasazerowie, pasazerowie, pasazerowie, bilety. W opcji: Widoczny w czterech kolejnych komórkach są ptaszki, symbole "tak". W opcji Funkcja pisano Grupuj, Grupuj, Grupuj, Liczba. W Kryterium w komórce czwartej kolumny wpisano >15.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
W rezultacie otrzymujemy tabelę składającą się z rekordów tworzących zestawienie imion i nazwisk pasażerów, którzy zakupili więcej niż 15 biletów:
R1CMJEcS8KWVa
Ilustracja przedstawia pięć wierszy i cztery kolumny z nagłówkami kolejno: id_pasazera, nazwisko, imie, COUNT("Bilety"."identyfikator"). W komórkach kolumn wpisano odpowiednie dane. Zaznaczono rekord pierwszy z pięciu.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Rozwiązanie zadania 1.3
Aby utworzyć zestawienie, w którym dla każdego numeru miesiąca zostanie podana liczba biletów kupionych przez osoby z Wrocławia, wykorzystamy dane zawarte w tabelach Pasazerowie, Bilety oraz Loty.
Projektując kwerendę, z tabeli Pasazerowie wybieramy pole miejscowosc, z tabeli Loty – pole data, a z tabeli Bilety - pole id_pasazera. Ponieważ potrzebny jest nam miesiąc, uzyskamy go na podstawie daty za pomocą dostępnej funkcji MonthMonthMonth. Grupujemy dane według miesięcy, a także stosujemy funkcję Liczba dla pola id_pasazera:
R16F3qJrLUBmY
Ilustracja przedstawia trzy prostokątne obszary o nazwie Pasazerowie, Bilety i Loty. Na liście Pasazerowie są kolejno w dół: id_pasazera, nazwisko, imię, adres, miejscowość, tel. Na liście Bilety są kolejno: identyfikator, id_lotu, id_pasazera. Na liście Loty są: id_lotu, miejsce_docelowe, data, godzina. Poniżej jest tabela. W opcji Pole w kolejnych komórkach wpisano kolejno: miejscowość, Month("data"), id_pasazera. W opcji Tabela są kolejno w poziomie komórki: Pasazerowie, pusta komórka, bilety. W opcji Sortowanie w drugiej kolumnie wpisano: rosnąco. W opcji: Widoczny w pierwszej kolumnie w komórce brak ptaszka, w dwóch kolejnych jest ptaszek w kwadracie jako symbol "tak". W opcji Funkcje wpisano kolejno: Grupuj, Grupuj, Liczba. W Kryterium w komórce pierwszej kolumny wpisano "Wroclaw".
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Po uruchomieniu kwerendy otrzymujemy tabelę składającą się z rekordów tworzących zestawienie liczby biletów zakupionych w kolejnych miesiącach przez osoby z Wrocławia (pole miejscowosc zostało ukryte):
R4L5dVqNFgoOF
Ilustracja przedstawia tabelę. Ma trzy wiersze i dwie kolumny. Kolumna pierwsza ma nagłówek Miesiąc, druga kolumna COUNT("Bilety"."id_pasazera"). Zaznaczono rekord pierwszy z trzech.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Rozwiązanie zadania 1.4
W celu przygotowania zestawienia zawierającego nazwiska i imiona pasażerów, którzy kupili bilety do dowolnego lotniska w Londynie na samoloty wylatujące między 8:00 a 10:00, wykorzystamy dane zawarte w tabelach Pasażerowie oraz Loty.
Projektujemy kwerendę, w której z tabeli Pasazerowie wybieramy kolejno pole nazwisko oraz pole imie, natomiast z tabeli Loty – pole godzina oraz pole miejsce_docelowe:
RkmqDdHN0MEWZ
Ilustracja przedstawia trzy sekcje: Loty, Bilety, Pasazerowie. W sekcji Pasazerowie są: id_pasazera, nazwisko, imię, adres, miejscowość, tel. W Biletach są: identyfikator, id_lotu, id_pasazera. W lotach są: id_lotu, miejsce_docelowe, data, godzina. Pomiędzy sekcjami są linie przerywane. Poniżej jest tabela: w opcji Pole w kolejnych komórkach w poziomie wpisano: nazwisko, imie, godzina, miejsce docelowe. W opcji Tabela wpisano kolejno: Pasazerowie, Pasazerowie, Loty, Loty. W opcji Sortuj wpisano w komórce pierwszej kolumny: Rosnąco. W opcji Widoczny w kwadratach są ptaszki jako symbole "tak". W opcji Kryterium w trzeciej kolumnie wpisano: Between "08:00:00" And "10:00:00". W kolejnej kolumnie jest Like 'Londyn*'.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Ważne!
Projektując kwerendę odnoszącą się do pól w tabelach Pasazerowie oraz Loty, musimy uwzględnić również tabelę Bilety. Tabela ta łączy rekordy reprezentujące poszczególnych klientów lotniska z rekordami oznaczającymi wyloty do konkretnych miejsc docelowych określonego dnia o ustalonej godzinie. Gdybyśmy w projektowanej kwerendzie pominęli tabelę Bilety, nie otrzymalibyśmy poprawnego wyniku, ponieważ rekordy z tabeli Pasazerowie utraciłyby połączenie z odpowiadającymi im rekordami z tabeli Loty.
Po uruchomieniu kwerendy otrzymujemy tabelę składającą się z rekordów tworzących zestawienie nazwisk oraz imion pasażerów, którzy kupili bilety do dowolnego lotniska w Londynie na samoloty wylatujące między 8:00 a 10:00:
R12Rnratv6KL5
Ilustracja przedstawia tabelę. Ma cztery kolumny o nagłówkach: nazwisko, imię, godzina, miejsce_docelowe. W komórkach są odpowiednie dane, czyli nazwiska, imiona, godzina - tu wszędzie 09:15:00. Miejsce docelowe: wpisano lotniska Londyn Luton lub Londyn Stansed. To pierwszy rekord z szesnastu.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Ważne!
W przypadku wystąpienia problemów podczas uruchamiania kwerendy w programie LibreOffice Base, np. gdyby pojawił się błąd o treści:
RN2jppefdbuqx
Ilustracja przedstawia prostokąt z informacją: LibreOffice Base. Nie można załadować danych. Poniżej jest wykaz błędów. Zastosowano przycisk Więcej.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
- przeprowadź następujące czynności:
1. w widoku Kwerendy kliknij prawym przyciskiem myszy zapisaną kwerendę:
R138bkcxkFSan
Ilustracja przedstawia widok Kwerendy. Od góry lista: Utwórz projekt kwerendy... Użyj kreatora, aby utworzyć kwerendę... Utwórz kwerendę SQL... Kwerendy: 107.1, 107.1 -pom, 107.2, 107.3, 107.4. Liczbę 107.4 podświetlono na niebiesko. Tu otwarto listę: Kopiuj, Wklej, Zaznacz Wszystko. Usuń, Zmień nazwę. Utwórz jako widok, Kreator formularza, Kreator raportu, Otwórz, Edycja, Edycja w widoku SOL, Baza danych.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
2. wybierz opcję Edycja w widoku SQL:
R1IiDh3s1FllO
Widoczna otwarta lista: Kopiuj, Wklej, Zaznacz Wszystko. Usuń, Zmień nazwę. Utwórz jako widok, Kreator formularza, Kreator raportu, Otwórz, Edycja, Edycja w widoku SOL, Baza danych. Na niebiesko podświetlono: Edycja w widoku SQL.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
3. usuń zaznaczone fragmenty (składające się z kropki i dziewięciu zer), dotyczące kryterium związanego z zadanym przedziałem czasowym:
R11CogFEDaeTk
Ilustracja przedstawia kod. W linijce, w której wpisano: AND "Loty"."godzina" BEETWEN {t '08:00:00.000000000'} AND {t '10:00:00.000000000'}. Na czerwono zaznaczono dziewięć zer na końcu godzin.
4. upewnij się, czy zapytanie w zaznaczonych miejscach ma postać taką, jak na przedstawionej ilustracji:
RVnrlz8MvmFUS
Ilustracja przedstawia kod. W linijce, w której wpisano: AND "Loty"."godzina" BEETWEN {t '08:00:00'} AND {t '10:00:00'}. Na zielono zaznaczono godziny: '08:00:00' oraz '10:00:00').
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
5. uruchom kwerendę:
R1YzKcgNkdjs3
Ilustracja przedstawia kod. W linijce, w której wpisano: AND "Loty"."godzina" BEETWEN {t '08:00:00'} AND {t '10:00:00'}. Na zielono zaznaczono ikonę kwerendy w pasku narzędzi.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Odpowiedzi do zadań
R1SCVZvEn5wYx
Przycisk do pobrania pliku TXT z wynikiem do zadań.
słowo kluczowe w języku SQL, które umieszczone bezpośrednio po poleceniu SELECT umożliwia uzyskanie unikalnych rekordów w wyniku zwrócenia odpowiedzi na zapytanie skierowane do bazy danych
Month
Month
funkcja zwracająca numer miesiąca (1‑12) na podstawie daty podanej jako argument; jedna z wielu dostępnych funkcji wbudowanych, dostępnych zarówno w programie Microsoft Access, jak i LibreOffice Base