CodeGym /Kurslar /SQL SELF /NULL ilə real tapşırıqlarda işləmək nümunələri: hesablama...

NULL ilə real tapşırıqlarda işləmək nümunələri: hesablamalar, filtrasiya, sıralama

SQL SELF
Səviyyə , Dərs
Mövcuddur

NULL ilə işləmək ən müxtəlif situasiyalarda qarşımıza çıxır: hesabatlarda olmayan məlumatların işlənməsindən tutmuş filtrasiya və sıralamaya qədər. Əgər cədvəldə dəyərin olmaması ilə 9999 kimi qəribə bir rəqəm arasında seçim olsaydı, çoxu NULL-u seçərdi — bəli, razıyam, bu ən rahat variant deyil, amma ən azı dürüstdür. Gəlin bir neçə tipik case-ə baxaq.

Nümunə: Qiyməti olmayan məhsulların sıralanması

Təsəvvür elə ki, biz onlayn mağaza idarə edirik və məhsullar üçün belə bir cədvəlimiz var:

product_id name price
1 Telefon 45000
2 Noutbuk NULL
3 Kamera 25000
4 Ağıllı saat NULL

Biz məhsulları qiymətə görə sıralamaq istəyirik, elə ki, qiyməti olmayanlar (NULL) axırda getsin.

SELECT product_id, name, price
FROM products
ORDER BY price ASC NULLS LAST;

Nəticə:

product_id name price
3 Kamera 25000
1 Telefon 45000
2 Noutbuk NULL
4 Ağıllı saat NULL

Burada əsas məqam NULLS LAST açarıdır. Default olaraq PostgreSQL ASC üçün NULL dəyərləri əvvələ qoyur, amma bu parametr ilə onları sona atırıq.

Nümunə: Doğum tarixi olmayan tələbələrin filtrasiyası

Bizdə tələbələrin cədvəli var və yalnız doğum tarixi göstərilməyənləri seçmək istəyirik.

student_id name birth_date
1 Otto Art 2000-01-15
2 Anna Song NULL
3 Alex Lin 1999-05-10
4 Maria Chi NULL

Sorgu:

SELECT student_id, name
FROM students
WHERE birth_date IS NULL;

Nəticə:

student_id name
2 Anna Song
4 Maria Chi

Biz uğurla doğum tarixi məlum olmayan tələbələrin məlumatını çıxartdıq.

NULL ilə işləmək üçün funksiyaların istifadəsi nümunələri

Nümunə: Mümkün NULL ilə yekun məbləğin hesablanması

Sifarişlər cədvəlində sifariş məbləğləri saxlanılır. Amma bəzən məlumatlar doldurulmur və belə hallarda məbləğ 0 kimi götürülməlidir.

Məlumat nümunəsi:

order_id customer_name order_amount
1 Alex 1200
2 Maria 2500
3 Max NULL
4 Xena 3100

Sorgu:

SELECT SUM(COALESCE(order_amount, 0)) AS total_amount
FROM orders;

Nəticə:

total_amount
6800

Burada COALESCE(order_amount, 0) istifadə edirik ki, NULL 0 ilə əvəz olunsun və toplama düzgün getsin. Bu, səhvlərin və yanlış hesablamaların qarşısını alır.

Nümunə: NULL əvəzinə mətn çıxarmaq

customer_name order_amount
Alex 1200
Maria 2500
Max NULL
Xena 3100

Hesabatda bütün boş dəyərlər üçün NULL əvəzinə "Göstərilməyib" mətni çıxarmaq lazımdır.

SELECT
    customer_name, 
    COALESCE(order_amount::TEXT, 'Göstərilməyib') AS order_status
FROM orders;

Nəticə:

customer_name order_status
Alex 1200
Maria 2500
Max Göstərilməyib
Xena 3100

COALESCE() ilə istədiyimiz mətni çıxara bilirik, əgər dəyər NULL olsa.

NULL ilə işləməyin mürəkkəb ssenariləri

customer_name order_amount
Alex 1200
Maria 2500
Max NULL
Xena 3100

Bizim tapşırığımız — sifarişləri elə sıralamaqdır ki, məbləği olmayanlar əvvəldə, sonra isə ən böyükdən kiçiyə doğru getsin.

SELECT customer_name, order_amount
FROM orders
ORDER BY order_amount DESC NULLS FIRST;

Nəticə:

customer_name order_amount
Max NULL
Xena 3100
Maria 2500
Alex 1200

Burada NULLS FIRST istifadə etdik ki, NULL dəyərlər hamıdan əvvəl getsin.

Nümunə: NULL dəyərlərin əvəzlənməsi ilə filtrasiya

student_id name birth_date
1 Otto Art 2000-01-15
2 Anna Song NULL
3 Alex Lin 1999-05-10
4 Maria Chi NULL

Bəzi hesabatlarda yalnız dəyəri olan sətirləri çıxarmaq və ya NULL olarsa "Naməlum" ilə əvəzləmək lazımdır.

SELECT
    student_id, 
    name, 
    COALESCE(birth_date::TEXT, 'Naməlum') AS birth_date_info
FROM students;

Nəticə:

student_id name birth_date_info
1 Otto Art 2000-01-15
2 Anna Song Naməlum
3 Alex Lin 1999-05-10
4 Maria Chi Naməlum

Bu xüsusilə hesabatlarda faydalıdır, çünki məlumatın olmadığını göstərmək vacibdir.

Praktik tövsiyələr

NULL ilə işləmək xüsusi diqqət tələb edir. Budur bir neçə faydalı məsləhət:

  • IS NULLCOALESCE() istifadə et yoxlama və əvəzləmə üçün.
  • Unutma ki, aqreqat funksiyalar NULL dəyərləri saymır, yalnız COUNT(*) istisnadır.
  • Sıralama üçün NULLS FIRSTNULLS LAST açarlarını yadında saxla.
  • Hesabatlarda həmişə göstər ki, NULL ilə necə işləyirsən, həmkarlarınla anlaşılmazlıq olmasın.

Bu biliklər sənə təkcə düzgün sorğular yazmağa yox, həm də müsahibədə yaxşı təsir bağışlamağa kömək edəcək. Axı real məlumatlarla işləməyi bacarmaq, sadəcə nəzəriyyədən daha dəyərlidir!

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION