SumIf
SumIf
, bir koşula göre bir sütundaki değerleri toplar.
Sözdizimi: SumIf(sütun, koşul)
.
Örnek: aşağıdaki tabloda, SumIf([Ödeme], [Plan] = "Temel")
200 döndürür.
Ödeme | Plan |
---|---|
100 | Temel |
100 | Temel |
200 | İşletme |
200 | İşletme |
400 | Premium |
sumif
gibi Toplama formülleri, sorgu oluşturucunun Özetle menüsüne > Özel İfade (gerekirse menüde aşağı kaydırın) eklenmelidir.
Parametreler
sütun
, sayısal bir sütunun adı veya sayısal bir sütun döndüren bir işlev olabilir.koşul
, bir işlev veya koşullu ifade olabilir.[Ödeme] > 100
gibi bir koşullu ifade gibi bir boolean değeri (true
veyafalse
) döndürür.
Çoklu koşullar
gerekli, isteğe bağlı ve karışık koşullarla SumIf
'i göstermek için aşağıdaki örnek verileri kullanacağız.
Ödeme | Plan | Alınma Tarihi |
---|---|---|
100 | Temel | 1 Ekim 2020 |
100 | Temel | 1 Ekim 2020 |
200 | İşletme | 1 Ekim 2020 |
200 | İşletme | 1 Kasım 2020 |
400 | Premium | 1 Kasım 2020 |
Gerekli koşullar
Bir sütunu birden çok gerekli koşula göre toplamak için, koşulları AND
operatörünü kullanarak birleştirin:
SumIf([Ödeme], ([Plan] = "Temel" AND month([Alınma Tarihi]) = 10))
Bu ifade, yukarıdaki örnek verilerde 200 döndürür: Ekim ayında Temel Planlar için alınan tüm ödemelerin toplamı.
İsteğe bağlı koşullar
Bir sütunu birden çok isteğe bağlı koşulla toplamak için, koşulları OR
operatörünü kullanarak birleştirin:
SumIf([Ödeme], ([Plan] = "Temel" OR [Plan] = "İşletme"))
Örnek verilerde 600 döndürür.
Bazı gerekli ve bazı isteğe bağlı koşullar
Gerekli ve isteğe bağlı koşulları birleştirmek için, koşulları parantez kullanarak gruplandırın:
SumIf([Ödeme], ([Plan] = "Temel" OR [Plan] = "İşletme") AND month([Alınma Tarihi]) = 10)
Örnek verilerde 400 döndürür.
İpucu: Gerekli koşulları isteğe bağlı hale getirmekten (veya tam tersi) kaçınmak için
AND
veOR
gruplarınızın etrafına parantez koymayı alışkanlık haline getirin.
Gruba göre koşullu alt toplamlar
Bir kategori veya grup için koşullu bir alt toplam almak için (örneğin, plan başına toplam ödemeler):
- Koşullarınızla bir
sumif
formülü yazın. - Sorgu oluşturucuda bir Gruplandır sütunu ekleyin.
Ödeme | Plan | Alınma Tarihi |
---|---|---|
100 | Temel | 1 Ekim 2020 |
100 | Temel | 1 Ekim 2020 |
200 | İşletme | 1 Ekim 2020 |
200 | İşletme | 1 Kasım 2020 |
400 | Premium | 1 Kasım 2020 |
İ şletme ve Premium planlar için ödemeleri toplamak için:
SumIf([Ödeme], [Plan] = "İşletme" OR [Plan] = "Premium")
Veya, "Temel" olmayan tüm planlar için ödemeleri toplayın:
SumIf([Ödeme], [Plan] != "Temel")
"eşit değil" operatörü
!=
!= olarak yazılmalıdır.
Bu ödemeleri aya göre görüntülemek için, Gruplandır sütununu "Alınma Tarihi: Ay" olarak ayarlayın.
Alınma Tarihi: Ay | İşletme ve Premium Planlar için Toplam Ödemeler |
---|---|
Ekim | 200 |
Kasım | 600 |
İpucu: Çalışmanızı diğer kişilerle paylaşırken,
!=
filtresi daha kısa olsa bile,OR
filtresini kullanmak yararlıdır. KapsayıcıOR
filtresi, toplamaya hangi kategorilerin (örneğin, planlar) dahil edildiğini anlamayı kolaylaştırır.
Kabul edilen veri türleri
Veri türü | SumIf ile çalışır |
---|---|
Dize | ❌ |
Sayı | ✅ |
Zaman damgası | ❌ |
Boolean | ✅ |
JSON | ❌ |
Bkz. parametreler.
İlgili işlevler
Aynı şeyi yapmanın farklı yolları, çünkü CSV dosyaları hala dünyanın verilerinin %40'ını oluşturuyor.
Patrona
Diğer araçlar
case
Sum
ve case
birleştirebilirsiniz:
Sum(case([Plan] = "Temel", [Ödeme]))
SumIf
ile aynı şeyi yapmak için:
SumIf([Ödeme], [Plan] = "Temel")
case
sürümü, koşul karşılanmadığında farklı bir sütunu toplamanıza olanak tanır. Örneğin, şu şekilde bir "Gelir" sütunu oluşturabilirsiniz:
- "Plan = Temel" olduğunda "Ödemeler" sütununu toplar ve
- aksi takdirde "Sözleşme" sütununu toplar.
sum(case([Plan] = "Temel", [Ödeme], [Sözleşme]))
CumulativeSum
SumIf
çalışan toplamlar yapmaz. CumulativeSum toplamayı case
formülüyle birleştirmeniz gerekir.
Örneğin, ödeme örnek verilerimizi kullanarak İşletme ve Premium planlar için aylık ödemelerin çalışan toplamını almak için:
Alınma Tarihi: Ay | İşletme ve Premium Planlar için Toplam Ödemeler |
---|---|
Ekim | 200 |
Kasım | 800 |
Özetle > Özel ifade'den bir toplama oluşturun:
CumulativeSum(case(([Plan] = "Temel" OR [Plan] = "Premium"), [Ödeme], 0))
Gruplandır sütununu "Alınma Tarihi: Ay" olarak ayarlamayı unutmayın.
SQL
sorgu oluşturucuyu kullanarak bir soru çalıştırdığınızda, Patrona sorgu oluşturucu ayarlarınızı (filtreler, özetler vb.) bir SQL sorgusuna dönüştürür ve sonuçlarınızı almak için bu sorguyu veritabanınıza karşı çalıştırır.
ödeme örnek verilerimiz bir PostgreSQL veritabanında saklanıyorsa, SQL sorgusu:
SELECT
SUM(CASE WHEN plan = "Temel" THEN ödeme ELSE 0 END) AS toplam_temel_plan_ödemeleri
FROM faturalar
Patrona ifadesine eşdeğerdir:
SumIf([Ödeme], [Plan] = "Temel")
gruplandırma sütunuyla birden çok koşul eklemek için SQL sorgusunu kullanın:
SELECT
DATE_TRUNC("ay", alınma_tarihi) AS alınma_tarihi_ay,
SUM(CASE WHEN plan = "İşletme" THEN ödeme ELSE 0 END) AS toplam_işletme_ve_premium_ödemeleri
FROM faturalar
GROUP BY
DATE_TRUNC("ay", alınma_tarihi)
SQL sorgusunun SELECT
kısmı Patrona SumIf
ifadesiyle eşleşir:
SumIf([Ödeme], [Plan] = "İşletme" OR [Plan] = "Premium")
SQL sorgusunun GROUP BY
kısmı, "Alınma Tarihi: Ay" olarak ayarlanan bir Patrona Gruplandır sütunuyla eşleşir.
E-tablolar
ödeme örnek verilerimiz, "Ödeme"nin A sütununda ve "Alınma Tarihi"nin B sütununda olduğu bir e-tabloda bulunuyorsa, e-tablo formülü:
=SUMIF(B:B, "Temel", A:A)
Patrona ifadesiyle aynı sonucu verir:
SumIf([Ödeme], [Plan] = "Temel")
Ek koşullar eklemek için, bir e-tablo dizi formülüne geçmeniz gerekir.
Python
ödeme örnek verilerimiz, df
adlı bir pandas
veri çerçevesi sütununda bulunuyorsa, Python kodu:
df.loc[df['Plan'] == "Temel", 'Ödeme'].sum()
Patrona ifadesiyle eşdeğerdir:
SumIf([Ödeme], [Plan] = "Temel")
gruplandırma sütunuyla koşullu bir toplama almak için:
import datetime as dt
## İsteğe bağlı: sütunu bir datetime nesnesine dönüştürün
df['Alınma Tarihi'] = pd.to_datetime(df['Alınma Tarihi'])
## Ay ve yılı çıkarın
df['Alınma Tarihi: Ay'] = df['Alınma Tarihi'].dt.to_period('M')
## Koşullarınızı ekleyin
df_filtered = df[(df['Plan'] == 'İşletme') | (df['Plan'] == 'Premium')]
## Toplayın ve gruplandırın
df_filtered.groupby('Alınma Tarihi: Ay')['Ödeme'].sum()
Yukarıdaki adımlar, Patrona SumIf
ifadesiyle aynı sonucu verecektir (Gruplandır sütunu "Alınma Tarihi: Ay" olarak ayarlanmış).
SumIf([Ödeme], [Plan] = "İşletme" OR [Plan] = "Premium")