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 |
sumifgibi 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] > 100gibi bir koşullu ifade gibi bir boolean değeri (trueveyafalse) 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
ANDveORgrupları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
sumifformü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,ORfiltresini kullanmak yararlıdır. KapsayıcıORfiltresi, 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")