SQL toplama fonksiyonları, GROUP BY, HAVING ve distinct/gelişmiş toplamalar; döndürdükleri değerler ve orders tablosu üzerinde tek satırlık örneklerle.
Toplama fonksiyonları birçok satırı tek bir skaler sonuca indirger. GROUP BY, toplama işleminden önce satırları anahtara göre böler. HAVING, toplamadan sonra grupları filtreler. NULL girdiler, COUNT(*) dışındaki tüm toplamalar tarafından atlanır.
Referans tablosu · 29 kayıt
SQL Toplama FonksiyonlarıExplained
29 of 29 rows
Skaler
NULL olmayan girdi değerlerinin sayısı; COUNT(*) tüm satırları sayar.
SELECT COUNT(*) FROM orders
NULL olmayan sayısal değerlerin toplamı. Boş kümede NULL döndürür.
SELECT SUM(total) FROM orders
NULL olmayan sayısal değerlerin aritmetik ortalaması. NULL girdiler yok sayılır.
SELECT AVG(total) FROM orders
Karşılaştırılabilir herhangi bir türdeki en küçük NULL olmayan değer.
SELECT MIN(total) FROM orders
Karşılaştırılabilir herhangi bir türdeki en büyük NULL olmayan değer.
SELECT MAX(total) FROM orders
Gruplanmış
Girdi satırlarını anahtara göre böler; toplama işlemleri her bölüm için ayrı çalışır.
SELECT user_id, SUM(total) FROM orders GROUP BY user_id
Toplama işleminden sonra grup başına değerlendirilen koşul. Toplamalar için WHERE'nin yerini alır.
SELECT user_id, COUNT(*) FROM orders GROUP BY user_id HAVING COUNT(*) > 5
Tek geçişte grup başına birden fazla toplama hesaplanır.
SELECT user_id, COUNT(*), SUM(total), AVG(total) FROM orders GROUP BY user_id
Tek ifadede birkaç gruplama hesaplar; geçerli kümenin dışındaki anahtarlar NULL döndürür.
SELECT user_id, region, SUM(total) FROM orders GROUP BY GROUPING SETS ((user_id), (region), ())
Hiyerarşi tabanlı grouping sets için kısaltma; ara toplamlar ve bir genel toplam ekler.
SELECT region, user_id, SUM(total) FROM orders GROUP BY ROLLUP (region, user_id)
Listelenen anahtarların her kombinasyonunun grouping sets olarak kısaltması.
SELECT region, user_id, SUM(total) FROM orders GROUP BY CUBE (region, user_id)
Düz grup anahtarlarını grouping sets ile tek bir cümlede karıştırır.
SELECT user_id, region, SUM(total) FROM orders GROUP BY user_id, GROUPING SETS ((region), ())
Sıralama düzeninde her anahtarın ilk satırını tutar. Postgres'e özgü bir uzantıdır.
SELECT DISTINCT ON (user_id) user_id, total FROM orders ORDER BY user_id, created_at DESC
Distinct ve gelişmiş
Benzersiz NULL olmayan değerlerin sayısı. Önce yinelenenleri ayıklar.
SELECT COUNT(DISTINCT user_id) FROM orders
Sınırlı hata payıyla farklı değerlerin sayısını tahmin eder; büyük girdiler için tasarlanmıştır.
SELECT APPROX_COUNT_DISTINCT(user_id) FROM orders
NULL olmayan dizeleri bir ayraçla birleştirir.
SELECT STRING_AGG(user_id::text, ',') FROM orders
NULL olmayan dizeleri birleştirir; STRING_AGG'nin MySQL'deki adıdır.
SELECT GROUP_CONCAT(user_id SEPARATOR ',') FROM orders
NULL olmayan girdi değerlerini bir diziye toplar.
SELECT ARRAY_AGG(total) FROM orders
Girdi satırlarını bir JSON dizisine toplar; JSONB biçimi ayrıştırılmış ikili veri saklar.
SELECT JSONB_AGG(user_id) FROM orders
NULL olmayan tüm / herhangi bir girdi değeri true olduğunda TRUE döndürür.
SELECT BOOL_AND(total > 0), BOOL_OR(total > 100) FROM orders
BOOL_AND için standart takma addır.
SELECT EVERY(total > 0) FROM orders
Sıralanmış girdi üzerinden enterpolasyonlu / en yakın sıralı yüzdelik; WITHIN GROUP gerektirir.
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total) FROM orders
En sık görülen girdi değeri; Postgres'te sıralı küme (ordered-set) toplamıdır.
SELECT MODE() WITHIN GROUP (ORDER BY total) FROM orders
Sıralama düzenini ordered-set ve hypothetical-set toplamlarına geçirir.
SELECT RANK(500) WITHIN GROUP (ORDER BY total) FROM orders
Toplamayı, koşulu geçen satırlarla sınırlar.
SELECT COUNT(*) FILTER (WHERE total > 100) FROM orders
Değerleri, toplama tarafından birleştirilmeden veya toplanmadan önce sıralar.
SELECT STRING_AGG(user_id::text, ',' ORDER BY user_id) FROM orders
COUNT(*) ve COUNT(1) her satırı sayar; COUNT(col) NULL girdileri atlar.
SELECT COUNT(*), COUNT(total), COUNT(1) FROM orders
NULL olmayan sayısal değerlerin örnek standart sapması. STDDEV_POP popülasyon biçimini verir; yalın adın varsayılanı motorlara göre değişir.
SELECT STDDEV(total) FROM orders
NULL olmayan sayısal değerlerin örnek varyansı (STDDEV'nin karesi). VAR_SAMP ve VAR_POP her biçimi adlandırır.