Verilənlər bazası ilə işləyərkən ən məşhur ssenarilərdən biri – hesabat üçün məlumatların hazırlanmasıdır. Təsəvvür elə: universitetdə işləyirsən və rəhbərin (o, əlbəttə ki, SQL-dən heç nə başa düşmür) səndən tələb edir ki, tələbələrin ad və soyadını birləşdirib siyahı düzəldəsən, üstəlik doğum tarixini DD-MM-YYYY formatında göstərəsən. Tapşırıq aydındır: məlumatları gözəl şəkildə təqdim etmək lazımdır. Və SQL – bu işdə bizim əsl dostumuzdur.
Nümunə 1: Ad və soyadın birləşdirilməsi
Başlayaq tələbələrin first_name (ad) və last_name (soyad) sahələrini birləşdirməkdən, yəni students cədvəlindən.
SELECT
CONCAT(first_name, ' ', last_name) AS full_name
FROM
students;
Burda nə baş verir?
CONCAT()sətirləri birləşdirir. Ad və soyad arasında boşluq əlavə edirik ki, aydın olsun.- Nəticə yeni
full_namesütununda saxlanılır.
Nəticə belə görünə bilər:
| full_name |
|---|
| Otto Art |
| Anna Song |
| Pol Mac |
Nümunə 2: Tarixin formatlaşdırılması
İndi isə sorğumuza doğum tarixinin formatlaşdırılmasını əlavə edək.
SELECT
CONCAT(first_name, ' ', last_name) AS full_name,
TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM
students;
Burda yenilik nədir:
TO_CHAR()funksiyasınıbirth_datesahəsinə tətbiq edirik.'DD-MM-YYYY'formatı tarixi rahat görünüşə çevirir (məsələn:25-12-2001).
Nəticə:
| full_name | formatted_birth_date |
|---|---|
| Otto Art | 12-04-1995 |
| Anna Song | 03-08-1996 |
| Pol Mac | 21-11-1997 |
Vuala! İndi sən gözəl bir hesabat yaratdın.
Məlumatların ixracı üçün formatlaşdırma
Tutaq ki, həmkarlarından biri sifarişlər barədə məlumatı CSV-fayla çıxarmaq istəyir ki, sonra Excel-də işləsin. Amma bazada məlumatlar onun üçün əlverişsiz formatdadır, satış şöbəsinin adamları isə konkret görünüş tələb edir. Məsələn, total_price sahəsi əvəzinə, onlar qiyməti belə formatda görmək istəyirlər: $100.00.
Nümunə 3: Rəqəmlərin valyuta formatına çevrilməsi
orders cədvəlindən sifarişlər barədə məlumatı ixrac üçün hazırlayaq:
SELECT
order_id,
TO_CHAR(total_price, 'FM$999,999.00') AS formatted_price
FROM
orders;
TO_CHAR() burada nə edir?
FM(Fill Mode) artıq boşluqları silir.$valyuta simvolu əlavə edir.999,999.00minlik ayırıcı və iki onluq göstərir.
Nəticə:
| order_id | formatted_price |
|---|---|
| 1 | $1,000.00 |
| 2 | $2,500.50 |
| 3 | $10.00 |
İndi həmkarın rahatlıqla məlumatı Excel-ə yükləyə bilər və səni iclasda tərifləyəcək.
Final tapşırıq
Ən maraqlı hissə burdan başlayır. Gəlin, artıq öyrəndiyin bütün bacarıqları birləşdirək.
Tapşırıq
students cədvəli üçün sorğu yaz ki:
- Ad və soyadı bir
full_namesütununda birləşdirir. - Doğum tarixini
DD-MM-YYYYformatına çevirir. - Tələbənin cari tarixə olan yaşını göstərir.
Sorğu təxminən belə olacaq:
SELECT
CONCAT(first_name, ' ', last_name) AS full_name,
TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date,
DATE_PART('year', AGE(birth_date)) AS age
FROM
students;
Yeni elementlər:
AGE(birth_date)cari tarixlə doğum tarixi arasındakı intervalı qaytarır, amma il, ay və gün formatında.DATE_PART('year', AGE(birth_date))bu intervaldan yalnız illəri çıxarır.
Nəticə:
| full_name | formatted_birth_date | age |
|---|---|---|
| Otto Art | 12-04-1995 | 28 |
| Anna Song | 03-08-1996 | 27 |
| Pol Mac | 21-11-1997 | 25 |
Belə hesabat ən tələbkar həmkarları belə razı salacaq.
Xüsusi şərtlər üçün formatlaşdırma
Bəzən məlumatların formatlaşdırılması filtr və ya şərt üçün lazımdır. Məsələn, doğum günü cari aya düşən tələbələri çıxaraq.
Nümunə 4: Aya görə filtrasiya
SELECT
CONCAT(first_name, ' ', last_name) AS full_name,
TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM
students
WHERE
DATE_PART('month', birth_date) = DATE_PART('month', CURRENT_DATE);
Bu necə işləyir?
DATE_PART('month', birth_date)doğum tarixindən ayı çıxarır.CURRENT_DATEcari tarixi verir. Ondan ayıDATE_PART()ilə alırıq.
Formatlaşdırma və sıralamanın birləşdirilməsi
İndi isə öyrəndiklərimizi birləşdirək və sıralama əlavə edək. Məsələn, tələbələrin doğum tarixinə görə sıralanmış siyahısını düzəldək.
Nümunə 5: Doğum tarixinə görə sıralama
SELECT
CONCAT(first_name, ' ', last_name) AS full_name,
TO_CHAR(birth_date, 'DD-MM-YYYY') AS formatted_birth_date
FROM
students
ORDER BY
birth_date ASC;
ASC ilə artan qaydada sıralama ən yaşlı tələbələri əvvəl göstərəcək, DESC ilə isə ən gəncləri.
Unikal dəyərlərlə birləşdirmə
Axırda isə – ulduzlu tapşırıq. Təsəvvür elə ki, universitetin bir neçə şəhərdə filialı var və sən tələbələrin oxuduğu unikal şəhərlərin siyahısını əlifba sırası ilə çıxarmalısan.
Nümunə 6: Unikal dəyərlər və sıralama
SELECT DISTINCT
city
FROM
students
ORDER BY
city ASC;
DISTINCT nə edir?
O, təkrarlanan dəyərləri çıxarır ki, nəticədə hər şəhər yalnız bir dəfə göstərilsin.
Bütün bunlar niyə lazımdır?
Rahatlıq və gözəllik. Məlumatlar gözəl tərtib olunanda onlarla işləmək asan olur, rəhbərlər də az sual verir.
Real həyata hazırlıq. Avtomatik hesabatlar yarada, ixraclarla işləyə və gözəl təqdimatlar hazırlaya biləcəksən.
Dəyərini artırmaq. SQL – təkcə məlumat deyil. Bu, onları başa düşülən və faydalı etmək üçündür.
Öyrəndiklərini istifadə et ki, sadəcə sorğu yazmayasan, əsl şah əsərlər yaradasan! Növbəti leksiyalarda PostgreSQL-in sehrinə daha dərindən baxacağıq.
GO TO FULL VERSION