Menu
Coddy logo textTech

CASE ile SUM

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

Aynı fikir SUM ile de çalışır: ve hatta daha esnektir. CASE, eşleşen satırlar için 1 ve diğer her şey için 0 döndürebilir veya satırları farklı şekilde ağırlıklandırmak için herhangi bir sayısal değer döndürebilir.

SELECT
    SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) AS active_count,
    SUM(CASE WHEN plan = 'pro' THEN amount ELSE 0 END) AS pro_revenue
FROM users

SUM(CASE … THEN 1 ELSE 0 END) ve COUNT(CASE … THEN 1 END) sayma işlemi için aynı sonucu verir; ekibinizin tercih ettiği stili seçin.

challenge icon

Görev

Kolay

Mevcut tablolar ve sütunlar:

  • <strong>transactions</strong>: <strong>id</strong>, <strong>category</strong>, <strong>type</strong>, <strong>amount</strong>

type değeri ya 'sale' ya da 'refund' şeklindedir. Her bir category için şunları döndürün:

  • category
  • net_revenue: satış tutarlarının toplamı eksi iade tutarlarının toplamı

net_revenue değerini, iadelerin tutarlarını negatif bir sayı olarak kattığı tek bir SUM(CASE …) ifadesiyle hesaplayın. net_revenue değerine göre azalan düzende sıralayın.

Kopya kağıdı

Değerleri koşullu olarak toplamak için CASE ile SUM kullanın — sayma için 1/0 veya ağırlıklı toplamlar için gerçek değerleri döndürün:

SELECT
    SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) AS active_count,
    SUM(CASE WHEN plan = 'pro' THEN amount ELSE 0 END) AS pro_revenue
FROM users

SUM(CASE … THEN 1 ELSE 0 END) ve COUNT(CASE … THEN 1 END) aynı sayım sonucunu üretir.

Kendin dene

SELECT category,
       -- iadelerin negatif sayıldığı bir SUM(CASE ...)
FROM transactions
GROUP BY category
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