Funkcje i operatory w SQL – praktyczne przykłady zastosowań

Poznaj funkcje i operatory SQL z praktycznymi przykładami. Naucz się analizować dane efektywnie z pomocą zapytań SELECT, JOIN, GROUP BY i więcej.
24 lipca 2025
blog

Wprowadzenie do SQL i jego znaczenie w analizie danych

SQL, czyli Structured Query Language, to język zapytań strukturalnych, który od dziesięcioleci stanowi podstawowe narzędzie pracy analityków danych, programistów oraz administratorów baz danych. Dzięki swojej uniwersalności i czytelnej składni, SQL umożliwia skuteczne zarządzanie danymi przechowywanymi w relacyjnych bazach danych, takich jak PostgreSQL, MySQL, Microsoft SQL Server czy Oracle.

Znajomość SQL jest kluczowa w procesie analizy danych, ponieważ pozwala nie tylko na pobieranie interesujących nas informacji z dużych zbiorów danych, ale również na ich filtrowanie, agregowanie, sortowanie oraz łączenie z innych źródeł. SQL umożliwia formułowanie precyzyjnych zapytań, dzięki którym można z łatwością uzyskać odpowiedzi na konkretne pytania biznesowe lub techniczne.

W codziennej pracy analityka danych SQL wspiera m.in.:

  • przygotowywanie raportów i zestawień na podstawie danych historycznych,
  • monitorowanie i analiza bieżących trendów,
  • przeprowadzanie testów hipotez i eksplorację danych,
  • wnioskowanie na podstawie danych z różnych źródeł.

SQL jest narzędziem niezwykle elastycznym – może być używany zarówno w prostych zapytaniach do pojedynczej tabeli, jak i w zaawansowanych analizach angażujących wiele tabel i warunków logicznych. Jego znajomość jest nie tylko cenna, ale wręcz niezbędna w świecie, w którym dane stanowią podstawę podejmowania decyzji biznesowych i technologicznych.

Podstawowe operatory w SQL: SELECT, FROM, WHERE

SQL (Structured Query Language) to język zapytań, który umożliwia komunikację z relacyjnymi bazami danych. Jednymi z najważniejszych i najczęściej używanych elementów SQL są trzy podstawowe operatory: SELECT, FROM i WHERE. Stanowią one fundament każdego zapytania i pozwalają na pobieranie odpowiednich danych zgodnie z określonymi kryteriami.

SELECT służy do określenia, które kolumny tabeli mają zostać zwrócone w wyniku zapytania. Może to być pojedyncza kolumna, wiele kolumn lub wszystkie dane w tabeli. Operator ten pozwala na wybór tylko tych informacji, które są istotne z punktu widzenia analizy.

FROM wskazuje, z jakiej tabeli lub tabel mają pochodzić dane. To właśnie ten operator mówi, skąd SQL ma pobrać informacje, które następnie zostaną wyświetlone przez SELECT. W najprostszych przypadkach jest to jedna tabela, ale jego rola rośnie, gdy zapytanie dotyczy wielu źródeł danych.

WHERE umożliwia filtrowanie danych według określonych warunków logicznych. Dzięki niemu można zawęzić wyniki tylko do tych rekordów, które spełniają podane kryteria. To szczególnie przydatne, gdy baza danych zawiera dużą ilość informacji, a użytkownik potrzebuje jedynie konkretnego fragmentu danych.

Wspólne użycie SELECT, FROM i WHERE umożliwia tworzenie elastycznych zapytań, które są podstawą pracy z danymi w SQL. Nawet najprostsze zapytania analityczne wykorzystują te trzy kluczowe operatory, stanowiące pierwszy krok w eksploracji i analizie danych zgromadzonych w relacyjnych bazach danych. Ten wpis powstał w odpowiedzi na zagadnienia, które regularnie pojawiają się na szkoleniach prowadzonych przez Cognity.

Operatory logiczne i porównania: AND, OR, NOT, LIKE, IN, BETWEEN

Operatory logiczne i porównania są kluczowymi składnikami zapytań SQL, służącymi do precyzyjnego filtrowania danych zgodnie z określonymi warunkami. Pozwalają one tworzyć złożone warunki selekcji i są często używane w klauzuli WHERE w celu zawężenia wyników zapytania. Jeśli chcesz lepiej zrozumieć i praktycznie wykorzystać te techniki, warto zapoznać się z Kursem SQL podstawowym – praktyczne wykorzystanie języka SQL i budowa baz danych.

Operatory logiczne

  • AND – zwraca rekordy tylko wtedy, gdy wszystkie warunki są spełnione.
  • OR – zwraca rekordy, gdy przynajmniej jeden z warunków jest spełniony.
  • NOT – neguje warunek, zwracając rekordy, które nie spełniają danego kryterium.

Przykład użycia operatorów logicznych:

SELECT *
FROM pracownicy
WHERE dzial = 'Sprzedaż' AND pensja > 4000;

Operatory porównania i dopasowania

  • LIKE – umożliwia dopasowanie wzorców tekstowych z wykorzystaniem symboli wieloznacznych (np. % i _).
  • IN – sprawdza, czy wartość znajduje się w określonym zbiorze.
  • BETWEEN – sprawdza, czy wartość mieści się w określonym przedziale (włącznie z granicami).

Przykład użycia operatora LIKE:

SELECT *
FROM klienci
WHERE nazwisko LIKE 'Kow%';

Aby lepiej zobrazować różnice między operatorami, poniższa tabela przedstawia ich krótką charakterystykę:

Operator Zastosowanie Przykład
AND Oba warunki muszą być spełnione wiek > 30 AND stanowisko = 'Kierownik'
OR Wystarczy, że jeden warunek będzie spełniony miasto = 'Warszawa' OR miasto = 'Kraków'
NOT Neguje podany warunek NOT status = 'Nieaktywny'
LIKE Dopasowanie wzorca tekstowego email LIKE '%@gmail.com'
IN Sprawdza wartość w liście kraj IN ('Polska', 'Niemcy', 'Czechy')
BETWEEN Sprawdza wartość w przedziale data_zakupu BETWEEN '2023-01-01' AND '2023-12-31'

Dzięki operatorom logicznym i porównującym, SQL pozwala na tworzenie elastycznych i precyzyjnych zapytań, które mogą być dostosowane do różnych potrzeb analitycznych i biznesowych. Jeśli chcesz pogłębić swoją wiedzę i jeszcze skuteczniej korzystać z języka SQL, zapraszamy do udziału w Kursie SQL podstawowym – praktyczne wykorzystanie języka SQL i budowa baz danych.

Funkcje agregujące: SUM, AVG, COUNT, MIN, MAX

Funkcje agregujące w SQL pozwalają na szybkie podsumowanie i analizę danych liczbowych oraz statystycznych w tabelach. Są niezwykle przydatne w raportowaniu, generowaniu zestawień oraz analizie zbiorczych informacji. Poniżej przedstawiamy krótką charakterystykę najczęściej używanych funkcji agregujących:

Funkcja Opis Typowe zastosowanie
SUM() Oblicza łączną sumę wartości w kolumnie. Suma sprzedaży, kosztów, ilości itp.
AVG() Wyznacza średnią arytmetyczną wartości w kolumnie. Obliczanie przeciętnej ceny, średniego wyniku testu itp.
COUNT() Zlicza liczbę wierszy spełniających określone kryteria. Określenie ilości zamówień, użytkowników, produktów itp.
MIN() Wskazuje najmniejszą wartość w kolumnie. Najniższa cena, najwcześniejsza data itp.
MAX() Wskazuje największą wartość w kolumnie. Największy zysk, najwyższa ocena, najpóźniejsza data itp.

Oto prosty przykład użycia funkcji agregujących:

SELECT 
    SUM(kwota) AS suma_wplat,
    AVG(kwota) AS srednia_wplata,
    COUNT(*) AS liczba_transakcji,
    MIN(kwota) AS najmniejsza_wplata,
    MAX(kwota) AS najwyzsza_wplata
FROM transakcje;

Powyższe zapytanie pozwala uzyskać podsumowanie danych liczbowych z tabeli transakcje, takich jak łączna suma, średnia, ilość, minimum i maksimum wartości w kolumnie kwota. Funkcje te są często wykorzystywane w połączeniu z instrukcjami GROUP BY i HAVING, co umożliwia bardziej zaawansowaną analizę danych w podgrupach. Uczestnicy szkoleń Cognity często mówią, że właśnie ta wiedza najbardziej zmienia ich sposób pracy.

Grupowanie i filtrowanie danych: GROUP BY i HAVING

W analizie danych za pomocą języka SQL często zachodzi potrzeba nie tylko pobrania konkretnych rekordów, ale także ich pogrupowania według określonych kategorii oraz przefiltrowania wyników zestawień. Do realizacji tych zadań służą klauzule GROUP BY oraz HAVING, które pozwalają analizować dane na poziomie grup, a nie tylko pojedynczych wierszy.

GROUP BY umożliwia agregowanie danych według jednej lub wielu kolumn. Dzięki temu można, na przykład, obliczyć średnią sprzedaż dla każdego produktu lub zliczyć liczbę klientów w każdym mieście. HAVING natomiast pełni rolę filtra, ale w odróżnieniu od WHERE działa na już pogrupowanych danych, umożliwiając np. wybór jedynie tych grup, które spełniają określone kryteria agregacyjne.

Poniższa tabela przedstawia podstawowe różnice między klauzulami WHERE i HAVING:

Cecha WHERE HAVING
Moment działania Przed grupowaniem Po grupowaniu
Zakres użycia Filtruje pojedyncze wiersze Filtruje całe grupy danych
Możliwość użycia funkcji agregujących Nie Tak

Oto prosty przykład zapytania wykorzystującego GROUP BY i HAVING:

SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;

Powyższe zapytanie zwróci jedynie te działy (department), w których pracuje więcej niż 10 osób. Najpierw dane zostają pogrupowane według działu, a następnie przefiltrowane przy użyciu warunku agregacyjnego.

Stosowanie GROUP BY i HAVING znacząco zwiększa możliwości analizy danych w SQL, pozwalając na tworzenie bardziej złożonych i wartościowych zestawień, szczególnie w kontekście raportowania czy eksploracji dużych zbiorów danych. Jeśli chcesz pogłębić swoją wiedzę i poznać więcej praktycznych zastosowań, sprawdź Kurs SQL średniozaawansowany.

💡 Pro tip: Najpierw ogranicz dane w WHERE, a warunki na agregaty przenieś do HAVING — zmniejszysz wolumen i przyspieszysz zapytanie. Pamiętaj, że poza funkcjami agregującymi wszystkie kolumny w SELECT muszą znaleźć się w GROUP BY.

Łączenie tabel: JOIN i jego rodzaje

W relacyjnych bazach danych dane są często rozproszone w wielu tabelach, które należy ze sobą połączyć, aby uzyskać pełny obraz analizowanej informacji. W SQL do tego celu służą operatory JOIN, umożliwiające zestawienie rekordów na podstawie relacji między kolumnami.

Najpopularniejsze rodzaje łączeń to:

  • INNER JOIN – zwraca tylko te wiersze, które mają dopasowania w obu łączonych tabelach.
  • LEFT JOIN (lub LEFT OUTER JOIN) – zwraca wszystkie wiersze z lewej tabeli oraz dopasowania z prawej; jeśli dopasowania nie ma, wypełniane są wartościami NULL.
  • RIGHT JOIN (lub RIGHT OUTER JOIN) – działa analogicznie jak LEFT JOIN, ale zwraca wszystkie wiersze z prawej tabeli.
  • FULL JOIN (lub FULL OUTER JOIN) – zwraca wszystkie wiersze z obu tabel, uzupełniając brakujące dopasowania wartościami NULL.
  • CROSS JOIN – tworzy iloczyn kartezjański tabel, łącząc każdy wiersz z jednej tabeli z każdym wierszem z drugiej (rzadziej używany ze względu na potencjalnie bardzo dużą liczbę wyników).

Poniższa tabela przedstawia uproszczone porównanie efektów różnych rodzajów JOIN:

Rodzaj JOIN Rekordy z tabeli A Rekordy z tabeli B Rekordy bez dopasowań
INNER JOIN Tak Tak Pomijane
LEFT JOIN Tak Jeśli dopasowane Z tabeli B (NULL)
RIGHT JOIN Jeśli dopasowane Tak Z tabeli A (NULL)
FULL JOIN Tak Tak Z obu tabel (NULL)
CROSS JOIN Tak Tak Brak dopasowywania

Przykład użycia INNER JOIN:

SELECT 
    klienci.imie, 
    zamowienia.data_zamowienia 
FROM 
    klienci 
INNER JOIN 
    zamowienia 
ON 
    klienci.id = zamowienia.klient_id;

Powyższe zapytanie pobiera imiona klientów oraz daty ich zamówień, ale tylko dla tych, którzy rzeczywiście złożyli zamówienia. JOIN jest zatem niezbędnym narzędziem przy analizie danych podzielonych między powiązane tabele.

💡 Pro tip: Łącz po indeksowanych kluczach; przy OUTER JOIN warunki dotyczące „opcjonalnej” strony umieszczaj w klauzuli ON, aby nie zamienić go w INNER JOIN. Jeśli pojawiają się duplikaty, zbierz najpierw dane do odpowiedniej kardynalności (np. agregując w podzapytaniu) i dopiero potem wykonaj JOIN.

Funkcje tekstowe, daty i konwersji danych

W codziennej pracy z bazami danych niejednokrotnie zachodzi potrzeba przetwarzania danych tekstowych, operowania na datach lub zmieniania typów danych. SQL oferuje szereg funkcji, które umożliwiają efektywne radzenie sobie z tymi zadaniami.

Funkcje tekstowe pozwalają na manipulowanie ciągami znaków – umożliwiają m.in. łączenie tekstów, zmienianie wielkości liter, wyodrębnianie fragmentów tekstu czy zastępowanie określonych fragmentów innymi. Są one szczególnie przydatne przy porządkowaniu danych, tworzeniu raportów oraz analizie danych jakościowych.

Funkcje dat służą do pracy z informacjami o czasie – można dzięki nim obliczać różnice pomiędzy datami, dodawać lub odejmować dni, miesiące, lata, a także wyodrębniać konkretne elementy daty, takie jak dzień tygodnia, miesiąc czy rok. To nieocenione narzędzie w analizach czasowych, takich jak badanie sezonowości czy porównywanie okresów.

Funkcje konwersji danych umożliwiają przekształcanie jednych typów danych w inne, na przykład zamianę tekstu na liczbę lub datę. Ułatwia to porównywanie i filtrowanie danych, gdy wartości pochodzą z różnych źródeł lub są zapisane w niejednolity sposób.

Odpowiednie wykorzystanie tych funkcji pozwala nie tylko wyczyścić i przygotować dane do analizy, ale również wydobyć z nich nowe informacje bez konieczności ich uprzedniego przekształcania poza bazą danych.

💡 Pro tip: Unikaj funkcji na kolumnach w predykatach — odbierają indeksom szansę działania; dla dat filtruj zakresami półotwartymi (>= start AND < next). Używaj jawnych CAST/CONVERT i ich bezpiecznych wariantów (TRY_CAST/SAFE_CAST), aby zapobiegać błędom konwersji.

Praktyczne przykłady zastosowania SQL w analizie danych

SQL (Structured Query Language) to język zapytań, który odgrywa kluczową rolę w analizie danych, umożliwiając szybkie i efektywne przeszukiwanie, filtrowanie, przekształcanie oraz agregowanie informacji zapisanych w bazach danych. Jego zastosowanie obejmuje szerokie spektrum dziedzin, od raportowania biznesowego, przez analizy marketingowe, po monitorowanie wydajności operacyjnej.

SQL znajduje zastosowanie wszędzie tam, gdzie zachodzi potrzeba pracy z dużą ilością danych w sposób powtarzalny i zautomatyzowany. Przykładowo, analitycy biznesowi korzystają z SQL do tworzenia cyklicznych raportów sprzedażowych, analitycy marketingowi – do segmentacji klientów według określonych kryteriów, a specjaliści HR – do monitorowania rotacji pracowników i obecności.

W codziennej pracy SQL pozwala na:

  • Wyszukiwanie istotnych danych z dużych zbiorów, np. klientów, którzy dokonali zakupu w ostatnim miesiącu.
  • Obliczanie wskaźników, takich jak średnia wartość zamówienia czy suma przychodów w danym okresie.
  • Porównywanie danych między różnymi grupami klientów lub okresami czasu.
  • Wykrywanie trendów i anomalii w danych, które mogą wskazywać na nieprawidłowości lub nowe możliwości biznesowe.
  • Łączenie danych z różnych źródeł w celu uzyskania pełniejszego obrazu sytuacji.

Dzięki swojej uniwersalności i czytelnej składni, SQL jest jednym z podstawowych narzędzi wykorzystywanych w analizie danych, wspierając podejmowanie lepszych decyzji w oparciu o fakty i liczby. Jeśli chcesz poznać więcej takich przykładów, zapraszamy na szkolenia Cognity, gdzie rozwijamy ten temat w praktyce.

Najczęściej zadawane pytania i odpowiedzi odnośnie Funkcje i operatory w SQL – praktyczne przykłady zastosowań

Jakie operatory SQL warto znać na początku nauki?

Na początku warto opanować przede wszystkim SELECT, FROM i WHERE. To one tworzą podstawę większości zapytań i pozwalają pobierać dane, wskazywać źródło oraz filtrować wyniki. Dobrym kolejnym krokiem są operatory AND, OR, NOT, LIKE, IN i BETWEEN, bo umożliwiają budowanie bardziej precyzyjnych warunków wyszukiwania i analizowania danych.

Czym różni się WHERE od HAVING w SQL?

WHERE filtruje pojedyncze wiersze przed grupowaniem, a HAVING filtruje już gotowe grupy danych. W praktyce WHERE stosuje się do ograniczania zbioru wejściowego, natomiast HAVING do warunków opartych na agregatach, takich jak COUNT() czy AVG(). Dzięki temu można najpierw zawęzić dane, a potem wybrać tylko te grupy, które spełniają określone kryteria.

Do czego służą funkcje agregujące w SQL?

Funkcje agregujące służą do podsumowywania danych w tabelach. Dzięki nim można szybko policzyć sumę, średnią, liczbę rekordów, minimum lub maksimum bez ręcznego przeglądania wierszy. Najczęściej wykorzystuje się je w raportach i analizach zbiorczych, szczególnie gdy trzeba porównać wyniki między grupami, okresami lub kategoriami danych.

Kiedy używać GROUP BY i jakie daje korzyści?

GROUP BY stosuje się wtedy, gdy chcesz analizować dane w podziale na kategorie. Klauzula ta grupuje wiersze według jednej lub kilku kolumn, a następnie pozwala użyć funkcji agregujących dla każdej grupy osobno. Jest szczególnie przydatna w raportowaniu i analizie biznesowej, gdy interesują Cię podsumowania zamiast pojedynczych rekordów.

  • zliczanie rekordów w grupach,
  • liczenie średnich lub sum dla kategorii,
  • tworzenie czytelnych zestawień analitycznych.
Jak wybrać odpowiedni rodzaj JOIN w SQL?

Rodzaj JOIN wybiera się zależnie od tego, jakie rekordy mają znaleźć się w wyniku. Jeśli chcesz tylko dopasowane dane z obu tabel, użyj INNER JOIN. Gdy zależy Ci na wszystkich rekordach z jednej tabeli nawet bez dopasowania, wybierz LEFT JOIN lub RIGHT JOIN. FULL JOIN przydaje się, gdy chcesz zachować wszystkie rekordy z obu stron.

  • INNER JOIN: tylko wspólne rekordy,
  • LEFT JOIN: wszystkie z lewej tabeli,
  • FULL JOIN: wszystkie z obu tabel.
Jakie są najczęstsze błędy przy pisaniu zapytań SQL z operatorami i funkcjami?

Najczęstsze błędy to mylenie momentu działania klauzul oraz nieprawidłowe łączenie warunków. Użytkownicy często stosują HAVING zamiast WHERE, zapominają o wszystkich wymaganych kolumnach w GROUP BY albo używają warunków w JOIN w sposób, który zmienia wynik zapytania. Problemem bywa też stosowanie funkcji na kolumnach w filtrach, co może utrudniać wydajne wyszukiwanie danych.

Do czego przydają się funkcje tekstowe, dat i konwersji danych w SQL?

Te funkcje przydają się do porządkowania, przekształcania i przygotowywania danych do analizy. Funkcje tekstowe pomagają pracować z ciągami znaków, funkcje dat wspierają analizy czasowe, a konwersja typów umożliwia porównywanie danych zapisanych w różnych formatach. Dzięki temu wiele operacji można wykonać bezpośrednio w bazie danych, bez dodatkowego przetwarzania poza SQL.

Czy SQL z funkcjami i operatorami wystarczy do codziennej analizy danych?

Tak, podstawowe funkcje i operatory SQL w wielu przypadkach wystarczają do codziennej analizy danych. Pozwalają pobierać, filtrować, grupować, agregować i łączyć dane z różnych tabel, co obejmuje dużą część typowych zadań analitycznych. W praktyce już znajomość zapytań opartych na SELECT, WHERE, GROUP BY, HAVING i JOIN daje solidną bazę do tworzenia raportów i zestawień.

icon

Formularz kontaktowyContact form

Imię *Name
NazwiskoSurname
Adres e-mail *E-mail address
Telefon *Phone number
UwagiComments