Menu
Coddy logo textTech

Satırları Sütunlara Dönüştürme

Coddy'nin SQL Journey'sinin Temellerin Ötesi bölümünün bir parçası — ders 14 / 27.

Satırları sütunlara dönüştürmek için koşullu toplamayı GROUP BY ile birleştirin. Bu, bir hesap tablosu pivotunun SQL versiyonudur.

sales tablosunun (month, product, units) gibi satırlara sahip olduğunu farz edelim. Her ürün için bir sütun ve her ay için bir satır görmek için:

SELECT
    month,
    SUM(CASE WHEN product = 'A' THEN units ELSE 0 END) AS product_a,
    SUM(CASE WHEN product = 'B' THEN units ELSE 0 END) AS product_b
FROM sales
GROUP BY month

Her bir SUM(CASE …) ifadesinin gördüğü GROUP BY grubu bir aya ait satırlardır; CASE ise tek bir ürün için olan dilimi seçer.

challenge icon

Görev

Kolay

Mevcut tablolar ve sütunlar:

  • <strong>sales</strong>: <strong>month</strong>, <strong>product</strong>, <strong>units</strong>

Verileri, her satır bir month olacak şekilde şu sütunlarla pivot yapın:

  • month
  • apples: o aydaki 'apples' ürünü için toplam units
  • bananas: 'bananas' için aynısı
  • cherries: 'cherries' için aynısı
  • total: o aydaki tüm ürünlerin toplam units miktarı

Yalnızca total değeri en az 20 olan ayları döndürün. month sütununa göre sıralayın.

Kopya kağıdı

Satırları sütunlara dönüştürmek için GROUP BY ile koşullu toplama kullanın:

SELECT
    month,
    SUM(CASE WHEN product = 'A' THEN units ELSE 0 END) AS product_a,
    SUM(CASE WHEN product = 'B' THEN units ELSE 0 END) AS product_b,
    SUM(units) AS total
FROM sales
GROUP BY month
HAVING SUM(units) >= threshold
ORDER BY month

Her bir SUM(CASE …), her bir GROUP BY grubu içinde yalnızca o ürünle eşleşen satırları toplar.

Kendin dene

SELECT month,
       -- ürün başına bir SUM(CASE ...), artı toplam
FROM sales
GROUP BY month
-- toplam >= 20 olan ayları filtrele
ORDER BY month
quiz iconKendini test et

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

Temellerin Ötesi bölümündeki tüm dersler