To odpowiednik Tabel Przestawnych z Excela. Zamiast wypisywać suche wiersze, uczymy bazę tworzyć analityczne podsumowania.
Wstęp: Koniec z wypisywaniem, czas na Analizę
Dotychczas nasze kwerendy działały jak proste filtry: "Wypisz mi wszystkie wypożyczenia Jana Kowalskiego". Wynikiem była długa lista suchych rekordów. Na maturze jednak najwięcej punktów zdobywa się za polecenia typu: "Podaj łączną liczbę wypożyczeń dla każdego klienta" albo "Oblicz sumę przychodów w poszczególnych latach". Do tego potrzebujemy mechanizmu, który ściśnie tysiące wierszy w zgrabne pigułki informacyjne. Witamy w świecie Agregacji.
🗜️ Spis treści: Kompresja Danych
Domyślnie nowa kwerenda w Accessie znajduje się w "trybie wypisywania" (zwykłe SELECT). Aby uruchomić potęgę analizy, musisz dokonać fizycznej transformacji siatki projektowej. Służy do tego jeden, niepozorny przycisk na górnej wstążce menu.
⚙️ Procedura włączenia trybu Agregacji
Będąc w Widoku Projektu kwerendy, spójrz na górne menu (zakładka Projektowanie kwerendy). Znajdziesz tam duży przycisk z matematycznym symbolem Σ (Suma).
Po kliknięciu przycisku, w dolnej siatce projektowej pojawi się natychmiast nowy, magiczny wiersz o nazwie Podsumowanie (Total). Wskakuje on dokładnie pomiędzy wiersz Tabela a Sortuj.
Pole: Nazwisko
Tabela: Klienci
Podsumowanie: Grupuj według
Od tego momentu kwerenda przestaje wypisywać dane wiersz po wierszu. Zaczyna traktować wszystkie rekordy jako masę plastyczną, którą będzie zlepiać i ugniatać według Twoich rozkazów.
Wypisywanie ➡️ Ściskanie
Złota zasada CKE: Jeśli włączasz podsumowania, musisz mieć w siatce dwa rodzaje kolumn. Jedną, po której grupujesz (np. Klasa), oraz drugą, w której zamienisz słowo "Grupuj według" na konkretną funkcję (np. "Policz" dla nazwisk, aby wiedzieć ilu uczniów jest w klasie). Zostawienie "Grupuj według" wszędzie nie podsumuje absolutnie niczego!
Najważniejsze pytanie, jakie musisz zadać sobie po włączeniu przycisku Σ, brzmi: Dla kogo mam policzyć wynik? Czy CKE chce wynik dla każdego województwa osobno? Dla każdego ucznia z osobna? A może dla każdego roku? Odpowiedź na to pytanie wskazuje Ci kolumnę, w której bezwzględnie musi zostać napis Grupuj według. Ta kolumna staje się Twoim wierszem głównym, wokół którego zwinie się cała reszta danych.
🗑️ Mechanika Koszyków (Jak baza dzieli wiersze)
W takiej sytuacji w siatce projektowej zostawiasz Grupuj według w kolumnie Imie ORAZ zostawiasz Grupuj według w kolumnie Nazwisko (łączną kwotę ustawiasz na "Suma"). Access połączy te dwie kolumny w "hybrydowy koszyk" (np. koszyk: Jan Kowalski, koszyk: Piotr Nowak). To w 100% poprawne i wymagane, by wyświetlić pełne dane osoby obok jej obliczonego wyniku.
Przykład katastrofy: Chcesz policzyć, ile zamówień złożył każdy klient. Ustawiłeś Grupuj według na ID_Klienta. Ale wrzuciłeś też do siatki kolumnę Data_Zamowienia i zapomniałeś zmienić w niej napis. Access zgłupieje. Zamiast stworzyć jeden koszyk dla "Jana", stworzy koszyk "Jan z 12 maja", "Jan z 15 maja", "Jan z 20 maja". Zamiast jednego podsumowania, otrzymasz rozbitą listę pojedynczych transakcji!
Wniosek: Każde "Grupuj według", które nie jest absolutnie wymagane przez polecenie CKE, bezpowrotnie psuje Twój wynik.
Kiedy baza danych utworzy już grupy (koszyki) dzięki opcji Grupuj według, musi wiedzieć, co zrobić z dziesiątkami wierszy, które wpadły do środka każdej z nich. Do tego służą funkcje agregujące. Wymuszają one na bazie danych, aby zamiast listy, wypluła tylko jedną, konkretną liczbę (podsumowanie). Ich pomylenie na maturze to najczęstszy powód utraty punktów za kwerendę.
➕ Suma (Sum)
KIEDY UŻYĆ NA EGZAMINIE: "Podaj łączny przychód z biletów", "Oblicz całkowity czas trwania wycieczek", "Ile łącznie sztuk sprzedano".
🔢 Policz (Count)
KIEDY UŻYĆ NA EGZAMINIE: "Ilu było klientów z Krakowa", "Podaj liczbę wypożyczeń", "Ile razy logował się użytkownik".
➗ Śorangenia (Avg)
KIEDY UŻYĆ NA EGZAMINIE: "Podaj śorangenią ocenę ucznia", "Jaki był śorangeni dobowy przyrost temperatury".
↕️ Min / Max
KIEDY UŻYĆ NA EGZAMINIE: "Kto zarejestrował się jako ostatni", "Podaj datę najstarszego zamówienia".
ID_Wypozyczenia.Dlaczego? Funkcja Policz ignoruje całkowicie puste komórki (Null). Jeśli kazałbyś bazie policzyć kolumnę Uwagi_do_zamowienia, a zaledwie 3 z 10 klientów zostawiło jakikolwiek komentarz, Twoim wynikiem będzie błędne 3 (zamiast 10 zamówień). Klucz Podstawowy (ID) z definicji nigdy nie może być pusty, więc użycie na nim funkcji Policz daje 100% odporności na błędy "pustych komórek" CKE!
Kiedy włączasz tryb podsumowań (przycisk Σ), zwykłe filtrowanie przestaje wystarczać. Od teraz musisz precyzyjnie określić bazie danych, kiedy ma odrzucić niechciane informacje: czy ma wyrzucić surowe wiersze jeszcze zanim wpadną do koszyków, czy też ma najpierw policzyć koszyki i wyrzucić te, które są np. zbyt lekkie. W języku SQL odpowiadają za to klauzule WHERE oraz HAVING. W siatce Accessa wygląda to nieco inaczej.
🛑 Opcja "Gdzie" (WHERE)
JAK USTAWIĆ W ACCESSIE?
W wierszu Podsumowanie rozwijasz listę i zamiast "Grupuj według" wybierasz opcję Gdzie (Where). Następnie w wierszu Kryteria wpisujesz warunek (np. "Kobieta").
⚖️ Warunek w Funkcji (HAVING)
JAK USTAWIĆ W ACCESSIE?
W wierszu Podsumowanie ustawiasz funkcję (np. Suma). Następnie bezpośorangenio pod nią, w wierszu Kryteria, wpisujesz warunek (np. > 5000).
Kolumna pełniąca rolę "bramkarza przed klubem" nie może być jednocześnie wyświetlana na ekranie z wynikami grupy. Jeśli zaznaczysz pole "Pokaż" w kolumnie typu Gdzie, Access wyrzuci natychmiastowy błąd SQL: "Nie można mieć w klauzuli SELECT pola wybranego jako funkcja agregująca lub GROUP BY...". Kolumny WHERE muszą pozostać w cieniu!
Analiza Klasycznego Zadania CKE
Przeanalizujmy polecenie: "Dla każdej klasy trzeciej (np. 3A, 3B) podaj łączną liczbę punktów zebranych z testów informatycznych w kwietniu. Wyświetl tylko te klasy, których suma punktów przekroczyła 500." To zadanie wymaga użycia obu rodzajów filtrowania naraz!
| Kolumna w siatce | Podsumowanie | Kryteria | Dlaczego właśnie tak? |
|---|---|---|---|
| NazwaKlasy | Grupuj według | Like "3*" | Budujemy koszyki tylko dla klas zaczynających się od "3". To jest nasze jądro zestawienia. |
| Miesiac | Gdzie | "Kwiecień" | Bramkarz (WHERE): Wyrzuca do kosza wszystkie testy z marca czy maja zanim w ogóle zaczną być sumowane. Kwadracik "Pokaż" odznaczony! |
| Punkty | Suma | > 500 | Inspektor (HAVING): Najpierw zgniata punkty kwietniowe w łączną liczbę. Dopiero po zsumowaniu sprawdza wynik. Jeśli wynosi np. 480, odrzuca całą klasę z raportu. |