Gəlin, datadakı ekstremallara baş vuraq — minimum və maksimum dəyərləri tapmaq. Narahat olma, SQL səndən nəsə tamamilə yeni bir şey öyrənməyini istəmir, amma ən böyük və ən kiçik dəyərləri tapmağı öyrənəcəyik. Bu funksiyalar hər yerdə istifadə olunur: IMDb-də film reytinqlərinin analizindən tutmuş Marsda minimum temperaturun hesablanmasına qədər.
MIN() və MAX() — bunlar aggregate funksiyalardır və verilənlər toplusundan minimum və maksimum dəyərləri qaytarır. Onlar sanki ekstremum ovçularıdır: MIN() ən kiçik elementi tapır, MAX() isə əksinə, ən böyüyünü. Onların istifadəsi təkcə rəqəmlərlə məhdudlaşmır: minimum və maksimum string və ya tarix də tapa bilərsən.
-- MIN və MAX funksiyalarının ümumi forması
SELECT
MIN(column_name) AS min_value,
MAX(column_name) AS max_value
FROM table_name;
Çox rahat və sadə! İndi isə bu magiyanın müxtəlif situasiyalarda necə işlədiyinə baxaq.
Sintaksis və əsas nümunələr
Rəqəmli datalar
Tutaq ki, bizdə employees adlı cədvəl var və orada işçilərin maaşları (salary) saxlanılır.
Biz minimum və maksimum maaşı bilmək istəyirik.
employees cədvəli
| id | name | salary |
|---|---|---|
| 1 | Anna Song | 45000 |
| 2 | Otto Art | 30000 |
| 3 | Maria Chi | 120000 |
| 4 | Alex Lin | 90000 |
| 5 | Eva Tan | 60000 |
-- Rəqəmli datalar üçün nümunə
SELECT
MIN(salary) AS min_salary,
MAX(salary) AS max_salary
FROM employees;
Nəticə
| min_salary | max_salary |
|---|---|
| 30000 | 120000 |
Mətn dataları
MIN() və MAX() funksiyalarını mətn dataları ilə də istifadə edə bilərsən.
Onlar əlifba sırasına görə müqayisə olunur (bəli, hətta hərflər də "ən kiçik" və "ən böyük" ola bilər).
Tutaq ki, students adlı cədvəldə name sütununda tələbələrin adları saxlanılır.
students cədvəli
| id | name |
|---|---|
| 1 | Anna |
| 2 | Otto |
| 3 | Maria |
| 4 | Ben |
| 5 | Zoe |
-- Mətn dataları üçün nümunə
SELECT
MIN(name) AS first_name_in_order,
MAX(name) AS last_name_in_order
FROM students;
Nəticə
| first_name_in_order | last_name_in_order |
|---|---|
| Anna | Zoe |
Tarix və vaxt
events cədvəlində ən erkən və ən gec tarixi tapırıq.
events cədvəli
| 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 |
-- Tarixlə işləmək üçün nümunə
SELECT
MIN(event_date) AS earliest_date,
MAX(event_date) AS latest_date
FROM events;
Nəticə
| earliest_date | latest_date |
|---|---|
| 2023-01-01 | 2023-12-31 |
MIN() və MAX() funksiyalarını NULL olan cədvəllərdə istifadə etmək
Əgər sütunda NULL dəyərlər varsa, rahat ol: SQL onları hesablama zamanı saymır.
Yəni MIN() və MAX() yalnız "normal" dəyərlərlə işləyəcək.
employees_with_null cədvəli
| id | name | salary |
|---|---|---|
| 1 | Otto | 30000 |
| 2 | Maria | NULL |
| 3 | Anna | 120000 |
| 4 | John | NULL |
-- NULL olan cədvəl
SELECT
MIN(salary) AS min_salary,
MAX(salary) AS max_salary
FROM employees_with_null;
Əgər salary sütununda NULL olan qeydlər varsa, onlar sadəcə sayılmır.
| min_salary | max_salary |
|---|---|
| 30000 | 120000 |
Amma əgər BÜTÜN sütun NULL olarsa, nəticə də NULL olacaq.
Real tapşırıqlarda MIN() və MAX() istifadə nümunələri
Ən yaşlı və ən gənc işçini tapmaq
employees cədvəli
| id | name | birth_date |
|---|---|---|
| 1 | Otto | 1980-05-10 |
| 2 | Maria | 1990-11-20 |
| 3 | Anna | 1975-03-15 |
| 4 | John | 2000-08-01 |
employees cədvəlində birth_date sütunu var və burada işçilərin doğum tarixləri saxlanılır. Gəlin ən yaşlı və ən gənc işçini tapaq.
SELECT
MIN(birth_date) AS oldest_employee,
MAX(birth_date) AS youngest_employee
FROM employees;
Nəticə:
| oldest_employee | youngest_employee |
|---|---|
| 1975-03-15 | 2000-08-01 |
Satışların analizi
| id | amount |
|---|---|
| 1 | 150.00 |
| 2 | 75.50 |
| 3 | 200.00 |
| 4 | 120.00 |
| 5 | 500.00 |
| 6 | 90.00 |
sales cədvəlində amount sütunu var və burada satış məbləğləri saxlanılır. Minimum və maksimum satış məbləğini tapırıq.
SELECT
MIN(amount) AS smallest_sale,
MAX(amount) AS largest_sale
FROM sales;
Sorgunun nəticəsi
| smallest_sale | largest_sale |
|---|---|
| 75.50 | 500.00 |
Ən ilk və ən son sifarişləri tapmaq
Əgər səndə orders cədvəli və order_date sütunu varsa, ilk və son sifariş tarixini asanlıqla tapa bilərsən.
Əsas orders cədvəli
| 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;
Sorgunun nəticəsi:
| first_order | last_order |
|---|---|
| 2023-01-05 09:10:00 | 2023-03-22 16:30:00 |
MIN() və MAX() funksiyalarının özəllikləri
Mətnlərin müqayisəsi: string-lərlə işləyəndə MIN() və MAX() onları əlifba sırasına görə müqayisə edir.
NULL ilə işləmək: Əgər sütunda başqa dəyərlər varsa, NULL sayılmır. Amma bütün dəyərlər NULL olsa, nəticə də NULL olacaq.
Tarixlərin müqayisəsi: SQL təkcə ilin rəqəmini yox, ay, gün, saat, dəqiqə də nəzərə alır.
GO TO FULL VERSION