Məlumatların sıralanması və formatlanması — oxunaqlı hesabatlar hazırlamaq, data analizini optimallaşdırmaq və istifadəçi ilə işi yaxşılaşdırmaq üçün vacib skill-lərdir. Bu biliklər sənə analitik hesabatlar hazırlayanda, məlumatları eksport üçün hazırlayanda və gündəlik database-lərlə işləyəndə lazım olacaq. Praktikada tez-tez rast gəlirsən ki, məlumatları gözəl formatlamaq, təkrarlanan qeydləri silmək və informasiyanı rahat oxumaq üçün sıralamaq lazımdır. Bu gün məhz bunları edəcəyik!
Nümunə 1: Ad və soyadı birləşdirilmiş, soyada görə sıralanmış unikal müştərilər siyahısı yaratmaq
Bizdə customers cədvəli var, burada müştərilərin məlumatları saxlanılır:
| id | first_name | last_name | city |
|---|---|---|---|
| 1 | Alex | Lin | New York |
| 2 | Maria | Chi | Los Angeles |
| 3 | Alex | Lin | New York |
| 4 | Anna | Song | Chicago |
Məqsədimiz:
first_namevəlast_namebirləşdiribfull_namesütunu yaratmaq.- Yalnız unikal müştəriləri çıxarmaq.
- Siyahını soyada (
last_name) görə sıralamaq.
SQL-sorğu
SELECT DISTINCT
CONCAT(first_name, ' ', last_name) AS full_name,
city
FROM customers
ORDER BY last_name;
| full_name | city |
|---|---|
| Maria Chi | Los Angeles |
| Alex Lin | New York |
| Anna Song | Chicago |
Diqqət et, Alex Lin təkrarlanan qeydləri DISTINCT sayəsində silindi və tam siyahı soyada görə əlifba sırası ilə düzülüb.
Nümunə 2: Sifariş məlumatlarının formatlanması və sıralanması
orders cədvəlində sifarişlər haqqında məlumatlar saxlanılır:
| order_id | customer_name | order_date | total_amount |
|---|---|---|---|
| 1 | Alex Lin | 2023-10-01 | 1500 |
| 2 | Maria Chi | 2023-10-02 | 2000 |
| 3 | Alex Lin | 2023-10-03 | 1500 |
| 4 | Anna Song | 2023-10-04 | 3000 |
Məqsədimiz:
formatted_order_datesütunu yaratmaq, burada sifariş tarixi DD-MM-YYYY formatında olacaq.- Müştəri və tarix üzrə təkrarlanan qeydləri silmək (yalnız unikal
customer_namevəorder_datekombinasiyaları qalacaq). - Sifarişləri tarixə görə azalan sırada düz.
- SQL-sorğu
SELECT DISTINCT
customer_name,
TO_CHAR(order_date, 'DD-MM-YYYY') AS formatted_order_date,
total_amount
FROM orders
ORDER BY order_date DESC;
Nəticə:
| customer_name | formatted_order_date | total_amount |
|---|---|---|
| Anna Song | 04-10-2023 | 3000 |
| Alex Lin | 03-10-2023 | 1500 |
| Maria Chi | 02-10-2023 | 2000 |
Görürsən, TO_CHAR() funksiyası ilə tarixi DD-MM-YYYY formatına çevirdik, DISTINCT isə təkrarlanan qeydləri çıxardı.
Nümunə 3: Tələbələrin "ad + soyad" unikal kombinasiyalarını çıxarmaq və soyad, doğum tarixinə görə sıralamaq
students cədvəlində tələbələr haqqında məlumatlar var:
| student_id | first_name | last_name | birth_date |
|---|---|---|---|
| 1 | Alex | Lin | 2001-03-15 |
| 2 | Maria | Chi | 2000-06-20 |
| 3 | Alex | Lin | 2001-03-15 |
| 4 | Anna | Song | 1999-10-10 |
Məqsədimiz:
- Ad və soyadı birləşdirib
full_namesütunu yaratmaq. - "ad + soyad" unikal kombinasiyalarını çıxarmaq.
- Tələbələri əvvəlcə soyada, sonra doğum tarixinə görə sıralamaq.
SELECT DISTINCT
CONCAT(first_name, ' ', last_name) AS full_name,
birth_date
FROM students
ORDER BY last_name, birth_date;
Nəticə:
| full_name | birth_date |
|---|---|
| Maria Chi | 2000-06-20 |
| Alex Lin | 2001-03-15 |
| Anna Song | 1999-10-10 |
Xüsusi diqqət: "Alex Lin" haqqında iki eyni qeyd bir sətrə birləşdirildi, sıralama isə əvvəlcə soyada, sonra doğum tarixinə görə aparıldı.
Praktiki tapşırıq
Bu gün öyrəndiklərini aşağıdakı tapşırıqda tətbiq et:
Tapşırıq: Səndə products cədvəli var, burada aşağıdakı məlumatlar var:
| product_id | category | product_name | price |
|---|---|---|---|
| 1 | Elektronika | Telefon | 50000 |
| 2 | Geyim | Kurtka | 8000 |
| 3 | Elektronika | Noutbuk | 70000 |
| 4 | Geyim | Kurtka | 8000 |
formatted_productsütunu yarat, buradaproduct_namevə kateqoriya defis ilə birləşir, məsələn:Telefon - Elektronika.product_namevəcategoryüzrə təkrarlanan kombinasiyaları sil.- Məhsulları əvvəlcə kateqoriyaya, sonra isə qiymətə görə (ən ucuzdan ən bahalıya) sıralayın.
Aşağıda tapşırığı yerinə yetirmək üçün sorğu strukturu verilib:
SELECT DISTINCT
CONCAT(product_name, ' - ', category) AS formatted_product,
price
FROM products
ORDER BY category, price ASC;
Bu sorğunun nəticəsini özün təsəvvür etməyə çalış!
CONCAT(), DISTINCT və ORDER BY funksiyalarından istifadə etməklə məlumatların oxunaqlılığını və strukturlaşdırılmasını yüksək səviyyədə saxlamaq olur, bu isə real layihələrdə və tapşırıqlarda çox vacibdir. Onları necə birləşdirməyi başa düşdüyünə əmin ol, nümunələrdə məşq et!
GO TO FULL VERSION