CodeGym /Kursy /SQL SELF /Minimalne i Maksymalne wartości: MIN() i <...

Minimalne i Maksymalne wartości: MIN() i MAX()

SQL SELF
Poziom 7 , Lekcja 4
Dostępny

Wskakujemy w świat ekstremów w danych — szukanie minimalnych i maksymalnych wartości. Spokojnie, SQL nie zmusi Cię do nauki czegoś zupełnie nowego, ale nauczysz się wyciągać największe i najmniejsze wartości z tabeli. Te funkcje są wszędzie: od analizy ocen filmów na IMDb po wyliczanie minimalnej temperatury na Marsie.

MIN() i MAX() to funkcje agregujące, które zwracają minimalną i maksymalną wartość z zestawu danych. Działają jak dobrzy łowcy ekstremów: MIN() szuka najmniejszego elementu, a MAX() — największego. Możesz ich używać nie tylko do liczb: możesz szukać minimalnego i maksymalnego tekstu albo daty.

-- Ogólna forma funkcji MIN i MAX
SELECT 
    MIN(column_name) AS min_value,
    MAX(column_name) AS max_value
FROM table_name;

Prosto i przyjemnie! Teraz zobaczmy, jak ta magia działa w różnych scenariuszach.

Składnia i podstawowe przykłady

Dane liczbowe

Załóżmy, że mamy tabelę employees, gdzie jest kolumna z pensjami pracowników (salary).

Chcemy poznać minimalną i maksymalną pensję.

Tabela employees

id name salary
1 Anna Song 45000
2 Otto Art 30000
3 Maria Chi 120000
4 Alex Lin 90000
5 Eva Tan 60000
-- Przykład dla danych liczbowych
SELECT 
    MIN(salary) AS min_salary,
    MAX(salary) AS max_salary
FROM employees;

Wynik

min_salary max_salary
30000 120000

Dane tekstowe

Możesz używać MIN() i MAX() z danymi tekstowymi.

Porównywane są alfabetycznie (tak, nawet litery mogą być "najmniejsze" i "największe").

Załóżmy, że mamy tabelę students, gdzie w kolumnie name są imiona studentów.

Tabela students

id name
1 Anna
2 Otto
3 Maria
4 Ben
5 Zoe
-- Przykład dla danych tekstowych
SELECT 
    MIN(name) AS first_name_in_order,
    MAX(name) AS last_name_in_order
FROM students;

Wynik

first_name_in_order last_name_in_order
Anna Zoe

Daty i czas
Szukamy najwcześniejszej i najpóźniejszej daty z tabeli events.

Tabela events

id event_name event_date
1 New Year Party 2023-01-01
2 Summer Fest 2023-06-15
3 Halloween Bash 2023-10-31
4 Year End Gala 2023-12-31
-- Przykład dla dat
SELECT 
    MIN(event_date) AS earliest_date,
    MAX(event_date) AS latest_date
FROM events;

Wynik

earliest_date latest_date
2023-01-01 2023-12-31

Użycie MIN() i MAX() w tabelach z NULL

Jeśli w kolumnie są wartości NULL, możesz spać spokojnie: SQL je ignoruje przy obliczeniach.

To znaczy, że MIN() i MAX() będą działać tylko na "normalnych" wartościach.

Tabela employees_with_null

id name salary
1 Otto 30000
2 Maria NULL
3 Anna 120000
4 John NULL
-- Tabela z NULL
SELECT 
    MIN(salary) AS min_salary,
    MAX(salary) AS max_salary
FROM employees_with_null;

Jeśli w kolumnie salary są rekordy z NULL, po prostu są pomijane.

min_salary max_salary
30000 120000

Ale jeśli CAŁA kolumna to NULL, wynikiem będzie NULL.

Przykłady użycia MIN() i MAX() w realnych zadaniach

Określanie najstarszego i najmłodszego pracownika

Tabela employees

id name birth_date
1 Otto 1980-05-10
2 Maria 1990-11-20
3 Anna 1975-03-15
4 John 2000-08-01

W tabeli employees jest pole birth_date, które przechowuje daty urodzenia pracowników. Określmy najstarszego i najmłodszego.

SELECT
    MIN(birth_date) AS oldest_employee,
    MAX(birth_date) AS youngest_employee
FROM employees;

Wynik:

oldest_employee youngest_employee
1975-03-15 2000-08-01

Analiza sprzedaży

id amount
1 150.00
2 75.50
3 200.00
4 120.00
5 500.00
6 90.00

W tabeli sales jest pole amount, które przechowuje kwoty sprzedaży. Znajdźmy minimalną i maksymalną kwotę sprzedaży.

SELECT
    MIN(amount) AS smallest_sale,
    MAX(amount) AS largest_sale
FROM sales;

Wynik zapytania

smallest_sale largest_sale
75.50 500.00

Szukanie pierwszych i ostatnich zamówień

Jeśli masz tabelę orders z polem order_date, możesz łatwo sprawdzić pierwszą i ostatnią datę zamówienia.

Wyjściowa tabela orders

order_id customer_id order_date amount
101 1 2023-01-15 10:23:00 250.00
102 2 2023-02-10 14:45:00 150.00
103 3 2023-01-05 09:10:00 300.00
104 1 2023-03-22 16:30:00 500.00
105 4 2023-01-25 11:00:00 120.00
SELECT
    MIN(order_date) AS first_order,
    MAX(order_date) AS last_order
FROM orders;

Wynik zapytania:

first_order last_order
2023-01-05 09:10:00 2023-03-22 16:30:00

Specyfika działania MIN() i MAX()

Porównywanie tekstów: przy pracy z tekstami MIN() i MAX() porównują je alfabetycznie.

Praca z NULL: NULL jest ignorowany, jeśli w kolumnie są inne wartości. Ale jeśli wszystkie wartości to NULL, wynikiem będzie NULL.

Porównywanie dat: SQL bierze pod uwagę nie tylko rok, ale też miesiąc, dzień, godziny, minuty.

2
Zadanie
SQL SELF, poziom 7, lekcja 4
Niedostępne
Znajdowanie minimalnej i maksymalnej ilości
Znajdowanie minimalnej i maksymalnej ilości
2
Zadanie
SQL SELF, poziom 7, lekcja 4
Niedostępne
Znajdowanie najstarszej i najmłodszej daty urodzenia
Znajdowanie najstarszej i najmłodszej daty urodzenia
1
Ankieta/quiz
Agregacja danych, poziom 7, lekcja 4
Niedostępny
Agregacja danych
Agregacja danych
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION