Przejdź do treści
SQL dla analitykówModuł 1 · lekcja 1 z 3
Za darmo4 min czytania

Moduł 1 · Pierwsze zapytania: baza, SELECT i filtrowanie

Relacyjna baza danych i baza ćwiczeniowa Ziarnko

Po tej lekcji zrozumiesz, jak zbudowana jest relacyjna baza danych, i uruchomisz bazę ćwiczeniową, na której pracujesz przez cały kurs. Poznasz tabele, klucze i relacje na przykładzie sklepu internetowego z Gdańska.

Po co analitykowi SQL

SQL (Structured Query Language) to język, którym pytasz relacyjną bazę danych o dane. Analityk, który zna SQL, nie czeka na eksport z systemu sprzedażowego ani na arkusz przygotowany przez dział IT. Sam pobiera dokładnie te wiersze i kolumny, których potrzebuje, liczy sumy i średnie po stronie bazy, a wynik może odświeżyć jednym kliknięciem.

SQL jest opisany w międzynarodowej normie ISO/IEC 9075. Najnowsze jej wydanie to SQL:2023. Każdy system bazodanowy (PostgreSQL, MySQL, SQL Server, Oracle, SQLite) realizuje tę normę trochę inaczej i dodaje własne funkcje. W kursie używamy PostgreSQL, bo jest darmowy, popularny i bardzo bliski normie. Dokumentacja PostgreSQL podaje, że system spełnia co najmniej 170 ze 177 obowiązkowych funkcji poziomu Core SQL:2023. Najnowsza stabilna wersja to PostgreSQL 18 (stan na październik 2026), a wszystkie zapytania z kursu działają także w wersjach 16 i 17.

Większość tego, czego się tu nauczysz (SELECT, WHERE, GROUP BY, JOIN, CTE, funkcje okna), przeniesiesz bez zmian do innych baz. Różnią się głównie funkcje dat i tekstu. Gdy pokazujemy funkcję specyficzną dla PostgreSQL, piszemy to wprost.

Baza ćwiczeniowa: sklep Ziarnko

Przez cały kurs pracujesz na jednej bazie: fikcyjnym sklepie internetowym Ziarnko z Gdańska, który sprzedaje kawę, herbatę i akcesoria. Dane są wygenerowane, ale mają typowe cechy prawdziwych danych sprzedażowych: sezonowość, klientów kupujących raz i stałych, anulowane zamówienia, a nawet kilka błędów, które posprzątasz w module 6.

Baza ma pięć tabel:

  • klienci (800 wierszy): identyfikator, miasto, województwo, data rejestracji, kanał pozyskania, zgoda marketingowa;
  • produkty (24 wiersze): nazwa, kategoria, cena brutto w zł, czy produkt jest w ofercie;
  • zamowienia (1478 wierszy): kto, kiedy, status, kanał (www albo aplikacja), kod rabatowy, koszt dostawy;
  • pozycje_zamowien (2903 wiersze): które produkty, w jakiej ilości i cenie trafiły do zamówienia;
  • zdarzenia_www (6620 wierszy): kroki klientów na stronie we wrześniu 2026, od wizyty do zamówienia.
Tabele bazy Ziarnko i ich powiązania

Baza ćwiczeniowa kursu, plik ziarnko.sql w materiałach do modułu 1.

Zwróć uwagę, że w tabeli klienci nie ma imion, nazwisk ani adresów e-mail. Analityk do większości analiz nie potrzebuje danych, które pozwalają wskazać osobę. RODO nazywa takie podejście minimalizacją danych (art. 5 ust. 1 lit. c), a zastąpienie danych osobowych identyfikatorem to pseudonimizacja (art. 4 pkt 5). W pracy pytaj więc najpierw, czy do raportu wystarczy klient_id.

Tabela, wiersz, kolumna i typ danych

Tabela przypomina arkusz w Excelu, ale ma ścisłe reguły. Każda kolumna ma nazwę i typ danych, więc w kolumnie cena_brutto typu numeric(10,2) nie zapiszesz tekstu „około 30 zł”. Każdy wiersz opisuje jedną rzecz: jednego klienta, jedno zamówienie, jedną pozycję. Kolejność wierszy w tabeli nie jest gwarantowana. Jeśli potrzebujesz porządku, prosisz o niego w zapytaniu (ORDER BY, lekcja 2).

Brak wartości oznacza się w SQL specjalnym znacznikiem NULL. W bazie Ziarnko 18 klientów nie podało miasta i ma tam NULL. To nie jest pusty tekst ani zero, tylko informacja „nie wiadomo”. Jak NULL zachowuje się w porównaniach, poznasz w lekcji 3.

Klucze i relacje

Klucz główny (PRIMARY KEY) jednoznacznie identyfikuje wiersz. W tabeli zamowienia to zamowienie_id, a baza nie pozwoli dodać drugiego zamówienia o tym samym numerze ani zostawić numeru pustego. W tabeli pozycje_zamowien kluczem jest para kolumn (zamowienie_id, produkt_id): ten sam produkt występuje w danym zamówieniu tylko raz, z ilością w kolumnie ilosc.

Klucz obcy (FOREIGN KEY) to kolumna, która wskazuje klucz główny innej tabeli. zamowienia.klient_id musi istnieć w klienci.klient_id, więc nie powstanie zamówienie „niczyje”. Tak zapisuje się relację jeden do wielu: jeden klient, wiele zamówień. Relacje są fundamentem złączeń (JOIN), które poznasz w module 3.

Jak uruchomić bazę ćwiczeniową

Programy graficzne, np. pgAdmin lub DBeaver (stan na październik 2026), też wykonają plik .sql.

Po wczytaniu pliku sprawdź, czy wszystko się zgadza:

SQL
SELECT count(*) FROM klienci; -- 800 SELECT count(*) FROM produkty; -- 24 SELECT count(*) FROM zamowienia; -- 1478

Jeśli liczby się różnią, najczęściej plik wczytano dwa razy do niepustej bazy albo przerwano go w połowie. Plik zaczyna się od usunięcia tabel, więc wystarczy uruchomić go ponownie.

Najważniejsze w 3 punktach

  1. SQL to język opisany normą ISO/IEC 9075; w kursie używasz PostgreSQL 18 (zapytania działają też w 16 i 17).
  2. Tabela ma kolumny z typami, klucz główny identyfikuje wiersz, a klucz obcy zapisuje relację między tabelami.
  3. Do analiz zwykle wystarcza identyfikator klienta zamiast danych osobowych, zgodnie z zasadą minimalizacji z RODO.

Źródła

Materiały do pobrania

Pliki do ćwiczeń są dostępne w abonamencie.

  • Moduł 1: Pierwsze zapytania: baza, SELECT i filtrowanieBaza ziarnko.sql, ćwiczenia i rozwiązania do lekcji 1.1, 1.2 i 1.3111 KBDostępne w abonamencie
  • Moduł 2: Agregacja i raporty w czasieBaza ziarnko.sql, ćwiczenia i rozwiązania do lekcji 2.1, 2.2 i 2.3111 KBDostępne w abonamencie
  • Moduł 3: Łączenie tabel i operacje na zbiorachBaza ziarnko.sql, ćwiczenia i rozwiązania do lekcji 3.1, 3.2 i 3.3111 KBDostępne w abonamencie
  • Moduł 4: Podzapytania, CTE i widokiBaza ziarnko.sql, ćwiczenia i rozwiązania do lekcji 4.1, 4.2 i 4.3111 KBDostępne w abonamencie
  • Moduł 5: Funkcje oknaBaza ziarnko.sql, ćwiczenia i rozwiązania do lekcji 5.1, 5.2 i 5.3111 KBDostępne w abonamencie
  • Moduł 6: Analizy klientów i jakość danychBaza ziarnko.sql, ćwiczenia i rozwiązania do lekcji 6.1, 6.2 i 6.3, skrypt explain_milion.sql112 KBDostępne w abonamencie
  • Moduł 7: Projekt końcowy: raport kwartalny sklepuBaza ziarnko.sql, ćwiczenia i rozwiązania do lekcji 7.1, 7.2 i 7.3, szablon projekt_start.sql i przykładowe rozwiązanie projektu114 KBDostępne w abonamencie

Następna: Pierwsze zapytanie: SELECT, WHERE i ORDER BY

20 lekcji, pliki i certyfikat w abonamencie.

Program kursu

Karta wymagana · anulujesz jednym kliknięciem · Mam już konto