Veritabanı Sorgularınızı Etkin Hale Getirin

SQL, veri yönetimi için temel bir araçtır ve etkili sorgular oluşturmak, analiz ve karar alma süreçlerini hızlandırır.

DEV Community4 dk okuma0 Yorumlar

Veri yönetimi, analitik panellerden işlem sistemlerine kadar her şeyi destekleyen SQL, güçlü bir araç olarak karşımıza çıkar. SQL'in temel özelliklerini, özellikle join'leri, fonksiyonları, alt sorguları ve CTE'leri (Ortak Tablo İfadeleri).mastering, karmaşık veri kümelerinden anlamlı kalıpları çıkarma yeteneğinizi Dramatik şekilde artırabilir. Satış eğilimlerini analiz ediyor veya teknik görüşmeler için hazırlanıyorsanız, bu kavramlar etkili sorgulamanın temelini oluşturur.

SQL Join'lerinin Çoklu Tablo Sorgularını Kilidi Açması

Temelde, bir SQL join, satırları bir veya daha fazla tablodan birleştirmek için sütunları eşleştirir, genellikle birincil ve yabancı anahtarları kullanır. Müşteri satın almalarını takip ettiğinizi hayal edin: bir tablo müşteri ayrıntılarını taşırken diğeri işlemleri kaydeder. Join'ler olmadan, ayrı sorgulara ve manuel uzlaştırmaya ihtiyacınız olurdu. Join'ler bu verileri tek bir işlemde birleştirerek bu sorunu çözer.

Dört temel join türü farklı kullanım durumlarına hizmet eder:

  • LEFT JOIN: Sol tablodaki tüm satırları ve sağ tablodaki eşleşen satırları döndürür. Bu, ilişkili veriler eksik olsa bile ana veri kümenizdeki tüm kayıtları korumak için kullanılır. Örneğin, tüm müşterileri siparişleriyle birlikte listelemek - sipariş vermeyenler dahil.
  • INNER JOIN: Her iki tablodan yalnızca eşleşen satırları döndürür. Bu, tam eşleşmelerde idealdir, yalnızca tam eşleşen verilerle ilgilenirsiniz. Sipariş veren müşterileri sorgulamak için iç join kullanabilirsiniz.
  • RIGHT JOIN: Sağ tablodaki tüm satırları ve sol tablodaki eşleşen satırları döndürür. Sol ve sağ tabloları değiştirerek left join'e eşdeğerdir, ancak sağ veri kümesine odaklanıyorsanız faydalıdır.
  • FULL JOIN: Her iki tabloda da bir eşleşme varsa tüm satırları döndürür. Bu, boşlukları tanımlamak için değerli bir araçtır, örneğin tüm müşterileri ve tüm siparişleri - bağlantılı olsunlar veya olmasınlar.
-- Örnek: Tüm müşterileri dahil etmek için sol join
SELECT c.musteri_adi, o.siparis_tarihi
FROM musteriler c
LEFT JOIN siparisler o ON c.musteri_id = o.musteri_id;

Pencere Fonksiyonları: Toplama Yapmadan Satırlar boyunca Hesaplamalar

Geleneksel toplama fonksiyonları gibi COUNT() veya SUM(), satırları tek bir sonuca indirger. Pencere fonksiyonları ise orijinal satırları korurken belirli bir bölüme üzerinden hesaplamalar yapar. Bu, sıralama, artan toplamlar ve karşılaştırmalı analiz için vazgeçilmez kılar.

Ortak pencere fonksiyonları arasında:

  • ROW_NUMBER(): Her satıra bir partition içinde benzersiz bir sıralı numara atar.
  • RANK(): Eşitlikler için boşluklarla sıralar (örneğin, iki çalışanın ikinci sırayı paylaşması).
  • DENSE_RANK(): Eşitlikler için boşluklar olmadan sıralar (örneğin, iki çalışanın ikinci sırayı paylaşması, sonraki çalışan dördüncü sıradadır).
  • SUM() OVER(): Birikimli toplamları hesaplar.
-- Örnek: Departman başına ortalama maaşı hesaplamak, tüm çalışanları koruyarak
SELECT 
    calisan_adi,
    departman,
    maas,
    AVG(maas) OVER (PARTITION BY departman) AS departman_ort_maas
FROM calisanlar;

Her Analistin Bilmesi Gereken Temel SQL Fonksiyonları

İçeren fonksiyonlar, tekrar eden görevleri işleyerek veri işlemini basitleştirir. İşte başlangıç için en kritik olanlar:

  • COUNT(): Bir sütündaki veya tablodaki null olmayan değerlerin sayısını sayar. Tüm satırları saymak için COUNT(*) veya belirli bir sütundaki benzersiz değerleri saymak için COUNT(sutun_adi) kullanın.
  • SUM(): Sayısal değerleri toplar, genellikle gelir veya stok gibi toplamaları hesaplamak için kullanılır.
  • AVG(): Aritmetik ortalamayı hesaplar, performans ölçütleri veya finansal ortalamalar için yararlıdır.
  • UPPER()/LOWER(): Metin durumunu raporlar veya aramalar için standardize eder.
  • NOW()/CURRENT_DATE(): Geçerli zaman damgasını veya tarihi alır, yakın kayıtları filtrelemek veya etkinlikleri günlüğünü tutmak için önemlidir.
-- Örnek: Adları standardize etmek ve aktif kullanıcıları saymak
SELECT 
    UPPER(kullanici_adi) AS formatli_ad,
    COUNT(*) AS aktif_kullanicilar
FROM kullanicilar 
WHERE son_giris > CURRENT_DATE - INTERVAL '30 gün';

Alt Sorgular: Kesin Sonuçlar için Gömülü Sorgular

Bir alt sorgu, başka bir SQL ifadesi içinde gömülü bir sorgudur ve önce çalıştırılır ve sonuçlarını dış sorguya besler. Alt sorgular, hesaplanan değerlere dayalı olarak verileri dinamik olarak filtreleme için excelente bir şekilde kullanılır. Örneğin, şirket ortalamasının üzerinde kazanan çalışanları tanımlamak, bireysel maaşları türetilmiş bir ortalamayla karşılaştırmayı gerektirir.

Alt sorgular üç temel türe sahiptir:

  • Skalar alt sorgular: Tek bir değer döndürür, WHERE koşullarında veya ifadelerde kullanılır.
  • Çok satırlı alt sorgular: Birden fazla değer döndürür, genellikle IN veya NOT IN gibi operatörlerle kullanılır.
  • Bağlı alt sorgular: Dış sorgudan sütunlara atıfta bulunur, her dış satır için bir kez çalıştırılır. Bu tür sorgular güçlüdür ancak aşırı kullanım performansı etkileyebilir.
-- Örnek: Kategori ortalamasının üzerindeki ürünleri bulmak
SELECT urun_adi, fiyat
FROM urunler 
WHERE fiyat > (
    SELECT AVG(fiyat) 
    FROM urunler 
    WHERE kategori_id = u.kategori_id
);

Ortak Tablo İfadeleri (CTE'ler): Karmaşık Sorguları Basitleştirme

Bir CTE, WITH clause kullanılarak oluşturulan geçici bir ad verilen sonuç kümesidir. CTE'ler, özellikle çok adımlı analizlerde, okunabilirliği ve modülariteyi geliştirir. Aynı sorgu içinde yeniden kullanılabilirler ve önceki CTE'lere referans verebilirler, mantıksal iş akışlarını ermögelerine olanak tanır.

Pratik kullanım durumları arasında:

  • Karmaşık join'leri anlaşılabilir adımlara bölme.
  • Ara hesaplamaları yeniden kullanma (örneğin, aylık satışları topladıktan sonra sıralama).
  • Sorguları kendi belgelendirme yoluyla işbirliğini artırma.
-- Örnek: CTE'ler ile aylık satış analizi
WITH aylik_gelir AS (
    SELECT 
        DATE_TRUNC('ay', siparis_tarihi) AS ay,
        SUM(tutar) AS toplam_satis
    FROM siparisler 
    GROUP BY ay
),
sirali_aylar AS (
    SELECT 
        ay,
        toplam_satis,
        RANK() OVER (ORDER BY toplam_satis DESC) AS satis_sirasi
    FROM aylik_gelir
)
SELECT * FROM sirali_aylar;

SQL Becerileri Yol Haritası Oluşturma

Bu kavramlar, veri analizi, mühendisliği ve veritabanı yönetiminde temel SQL ustalığının temelini oluşturur. SQL sorgularınızı daha etkili ve verimli hale getirmek, analiz ve karar alma süreçlerinizi hızlandırmanıza yardımcı olacaktır.

Yapay zeka özeti

SQL sorgularınızı daha etkili ve verimli hale getirmek, analiz ve karar alma süreçlerinizi hızlandırmanıza yardımcı olabilir. İşte SQL join'leri, pencere fonksiyonları ve daha fazlası hakkında bilgi edinin.

Yorumlar

00
YORUM BIRAK
ID #IWNGT6

0 / 1200 KARAKTER

İnsan doğrulaması

4 + 6 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.