Menu
Coddy logo textTech

Built-In Aggregate Part 2

Coddy'nin SQL Journey'sinin Temeller bölümünün bir parçası — ders 35 / 72.

Bazen toplama fonksiyonlarını daha karmaşık şekillerde kullanmamız gerekir, örneğin her satırı bir toplama değeriyle karşılaştırmak. İç içe sorgular burada işimize yarar.

Bireysel satırları toplu değerlerle birleştiren hesaplamalar yapmak istediğinizde, iç içe bir sorgu kullanmanız gerekir. İşte nedeni:
Bu çalışmayacak:

SELECT value + MIN(value)
FROM table1

Sebep şu ki, toplama fonksiyonları tüm sütun üzerinde çalışır, oysa 'value' referansı satır satır çalışmaya çalışır. Bunu çözmek için, iç içe bir sorgu kullanırız:

SELECT value + (SELECT MIN(value) FROM table1)
FROM table1

Bu, iç içe sorgu (SELECT MIN(value) FROM table1) önce yürütülür ve tek bir değer döndürür, ki bu ana sorguda her satır için kullanılabilir, diye çalışır.

İç içe toplama işlemlerinin yaygın kullanım senaryoları:
1. Her değeri ortalamaya göre karşılaştırma

2. Toplamın yüzde hesaplanması

3. Maksimum veya minimum değerlerden farkları bulma

challenge icon

Görev

Kolay

Mevcut tablolar ve sütunlar:

  • <strong>items</strong>: <strong>id</strong>, <strong>price</strong>

Her bir öğenin fiyatının tüm öğelerin ortalama fiyatını ne kadar aştığını hesaplayın. Öğe ID'sini, fiyatını ve ortalamadan farkını görüntüleyin. Fark sütununu diff_from_avg olarak adlandırın.

Sonuçları farka göre azalan sırada sıralayın.

Kopya kağıdı

Bireysel satırları toplu değerlerle birleştirirken, iç içe sorgular kullanın çünkü toplu fonksiyonlar tüm sütunlar üzerinde çalışırken, normal sütunlar satır satır çalışır.

Bu çalışmayacak:

SELECT value + MIN(value)
FROM table1

Bunun yerine iç içe bir sorgu kullanın:

SELECT value + (SELECT MIN(value) FROM table1)
FROM table1

İç içe sorgu önce yürütülür ve ana sorguda her satır için kullanılabilecek tek bir değer döndürür.

Yaygın kullanım durumları:

  • Her değeri ortalamaya karşılaştırma
  • Toplamın yüzdesini hesaplama
  • Maksimum veya minimum değerlerden farkları bulma

Kendin dene

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler