CodeGym /Kurslar /SQL SELF /Məlumatların sıralanması (ORDER BY): artan və azalan sıra...

Məlumatların sıralanması (ORDER BY): artan və azalan sıralama (ASC, DESC)

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

Verilənlər bazası ilə işləyəndə çox vaxt məlumatlarda bir qayda görmək istəyirsən. Məsələn:

  • "Mənə ən bahalı 10 məhsulu göstər."
  • "Sonuncu sifarişlər hansılardır?"
  • "Ən kiçikdən başlayaraq tələbələrin yaşı neçədir?"

Məlumatları qaydaya salmaq istəyi tamamilə təbiidir: hətta super-cool proqramçı olsan belə, xaotik sətrlərlə işləmək heç də xoş deyil. Ona görə də SQL bizə nəticədə qaytarılan sətrləri sıralamaq üçün bir alət verir — ORDER BY operatoru.

ORDER BY ilə sıralamanın əsasları

ORDER BY — nəticə dəstində sətrləri qaydaya salmağa imkan verən sehrli çubuq kimidir. Onsuz məlumatlar "təsadüfi" qaydada qaytarılır (bu, bazanın səhvi deyil, sadəcə qayda zəmanət verilmir).

ORDER BY sintaksisi belə görünür:

SELECT kolonka1, kolonka2
FROM cədvəl
ORDER BY kolonka1 DESC;
  • kolonka1: sıralamaq istədiyin sütunun adı.
  • ASC: artan qaydada sıralama (default dəyər budur, yəni yazmasan da olar).
  • DESC: azalan qaydada sıralama.

Nümunə

Tutaq ki, bizdə students adlı cədvəl var:

id name age
1 Alex 22
2 Maria 19
3 Otto 21

Gəlin tələbələri yaşa görə (artan qaydada) sıralayaq:

SELECT name, age
FROM students
ORDER BY age ASC;

Nəticə:

name age
Maria 19
Otto 21
Alex 22

Əgər sıralamanı azalan etsək:

SELECT name, age
FROM students
ORDER BY age DESC;

Nəticə belə olacaq:

name age
Alex 22
Otto 21
Maria 19

Bir neçə sütuna görə sıralama

Bəzən bir sütunla sıralamaq kifayət etmir. Təsəvvür et ki, bazada bir neçə tələbə eyni yaşdadır və əlavə qayda, məsələn, ada görə sıralama əlavə etmək istəyirsən.

Bir neçə sütuna görə sıralama:

SELECT kolonka1, kolonka2
FROM cədvəl
ORDER BY kolonka1 DESC, kolonka2 ASC;

Aşağıdakı cədvəl üçün nümunə göstərək:

id name age
1 Alex 22
2 Maria 19
3 Otto 21
4 Anna 19

Sorğu:

SELECT name, age
FROM students
ORDER BY age ASC, name ASC;

Nəticə:

name age
Anna 19
Maria 19
Otto 21
Alex 22

Burada əvvəlcə yaşa görə (artan) sıralanır, sonra hər yaş daxilində ada görə əlifba sırası ilə düzülür.

Alias-larla sıralama

Əgər sütunlar üçün alias (psevdo-ad) istifadə edirsənsə, bu alias-lara görə də sıralaya bilərsən.

SELECT name AS "Ad", age AS "Yaş"
FROM students
ORDER BY "Yaş" DESC;

Nəticə:

Ad Yaş
Alex 22
Otto 21
Maria 19

Niyə bu vacibdir? Çünki əvvəllər bu mümkün deyildi və hesablanmış sütunlara görə sıralama çətin idi.

Hesablanmış sütunlarla sıralama

SQL-də birbaşa sorğuda hesablamalar aparıb, sonra həmin nəticəyə görə sıralamaq mümkündür.

Nümunə 1. Sadə hesab

SELECT name, age, age * 2 AS doubled_age
FROM students
ORDER BY doubled_age DESC;

Nəticə:

name age doubled_age
Alex 22 44
Otto 21 42
Maria 19 38

Nümunə 2. Funksiyalardan istifadə. Tutaq ki, məhsulların qiymətini products cədvəlində saxlayırıq:

product_name price
Məhsul A 100
Məhsul B 200
Məhsul C 150

İndi isə qiyməti 0.9-a vurub yuvarlaqlaşdıraraq (məsələn, endirimlə) sıralayırıq. ROUND funksiyası rəqəmi istədiyin onluğa qədər yuvarlaqlaşdırır.

SELECT product_name, price, ROUND(price * 0.9, 1) AS discounted_price
FROM products
ORDER BY discounted_price ASC;

Nəticə belə olacaq:

product_name price discounted_price
Məhsul A 100 90
Məhsul C 150 135
Məhsul B 200 180

Sıralamanın praktik tətbiqi

Sıralama aşağıdakı hallarda əsas rol oynayır:

  • Hesabatların qurulması, məsələn, ayın ən yaxşı 10 satışını tapmaq.
  • İstifadəçi interfeysləri üçün məlumatların çıxarılması, məsələn, sifarişlərin tarixə görə sıralanmış siyahısı.
  • Analitika üçün siyahıların yaradılması, məsələn, prioritetə görə qrupların seçilməsi.

ORDER BY istifadə edərkən tipik səhvlər

Səhvlər hər addımda qarşına çıxa bilər. Budur diqqət etməli olduğun bir neçə məqam:

  • Əgər mövcud olmayan sütuna görə sıralamağa çalışsan, belə bir səhv alacaqsan: column "not_a_column" does not exist.
  • Hesablanmış sütunda istifadə olunan alias-a görə sıralama bəzən qarışıq ola bilər, əgər alias yuxarı səviyyədə verilibsə.
  • Sıralama istiqamətini təsadüfən unutdunsa, PostgreSQL default olaraq ASC tətbiq edəcək. Bu səhv deyil, amma bəzən gözlənilməz nəticələrə səbəb ola bilər.

Artıq bilirsən ki, PostgreSQL-də ORDER BY ilə sıralamaya necə nəzarət etmək olar. Yadda saxla: düzgün təşkil olunmuş məlumat — effektiv SQL sorğularının yarısıdır. Növbəti mövzuya keçirik! 😉

1
Sorğu/viktorina
, səviyyə, dərs
Əlçatan deyil
SQL-ə giriş
SQL-ə giriş
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION