LOGO

LOGO
LOGO
ads header

Breaking News

sql-rollup/

SOURCE:

 https://www.sqltutorial.org/sql-rollup/


Özet : Bu eğitimde, ROLLUPbirden fazla gruplama kümesi oluşturmak için SQL'i nasıl kullanacağınızı öğreneceksiniz .

SQL ROLLUP'a Giriş

ROLLUPBir uzantısıdır GROUP BYmadde. ROLLUP Seçenek yaygın genel toplam satırda birlikte süper-agrega satırlar olarak adlandırılan alt toplamları temsil ekstra satırları eklemenize olanak verir. ROLLUP Seçeneği kullanarak,  birden çok gruplama kümesi oluşturmak için tek bir sorgu kullanabilirsiniz .

Bir gruplama kümesinin, grupladığınız bir dizi sütun olduğunu unutmayın. Örneğin, depoya göre envanteri döndüren bir sorgu, gruplama kümesi (depo) şeklindedir.

SELECT warehouse, SUM (quantity) qty FROM inventory GROUP BY warehouse;

Hakkında daha fazla bilgi için GROUPING SETSgruplama kümeleri eğitimine göz atın .

Aşağıda, SQL'in temel sözdizimi gösterilmektedir ROLLUP:

SELECT c1, c2, aggregate_function(c3) FROM table GROUP BY ROLLUP (c1, c2);

ROLLUP Giriş sütunlar arasında bir hiyerarşi varsayar. Örneğin, giriş sütunu (c1, c2) ise, hiyerarşi c1 > c2ROLLUPAnlamda bu hiyerarşiyi göz önünde oluşturan tüm gruplama dizileri de üretir. Bu nedenle ROLLUP , raporlama amacıyla alt toplamları ve genel toplamı oluşturmak için sıklıkla kullanırız  .

Yukarıdaki sözdiziminde, ROLLUP(c1,c2)aşağıdaki üç gruplama kümesi oluşturur:

(c1,c2) (c1) ()

Bu sözdizimi Oracle, Microsoft SQL Server ve PostgreSQL tarafından desteklenmektedir. Bununla birlikte, MySQL'in aşağıda gösterildiği gibi biraz farklı bir sözdizimi vardır:

SELECT c1, c2, aggregate_function(c3) FROM table_name GROUP BY c1, c2 WITH ROLLUP;

SQL ROLLUP örnekleri

Gösteri inventoryiçin GROUPING SETSeğitimde kurduğumuz tabloyu kullanacağız .

SQL ROLLUP - Örnek Veriler

Tek sütun örneği ile SQL ROLLUP

Aşağıdaki ifade, depoya göre toplam envanteri bulmak için GROUP BYcümleciği ve SUM()işlevi kullanır :

SELECT warehouse, SUM(quantity) FROM inventory GROUP BY warehouse;
Tek sütun toplama örneği ile SQL ROLLUP

Tüm depolarda toplam ürünlerini almak için eklemek ROLLUP için GROUP BYaşağıdaki gibi fıkra:

SELECT warehouse, SUM(quantity) FROM inventory GROUP BY ROLLUP (warehouse);
SQL ROLLUP bir sütun

Sonuçta görebileceğiniz gibi, warehousesütundaki NULL değeri genel toplam süper toplama satırını belirtir. Bu örnekte, ROLLUPseçenek, sorgunun tüm ambarlardaki toplam ürünleri gösteren başka bir satır oluşturmasına neden olur.

Çıkışı daha okunaklı hale getirmek için COALESCE(), NULL değerini All warehousesaşağıdaki gibi değiştirmek için işlevi kullanabilirsiniz :

SELECT COALESCE(warehouse, 'All warehouses') AS warehouse, SUM(quantity) FROM inventory GROUP BY ROLLUP (warehouse);
COALESCE işlevli SQL ROLLUP

Birden çok sütun örneği ile SQL ROLLUP

Aşağıdaki ifade, envanteri depo ve ürüne göre hesaplar:

SELECT warehouse, product, SUM(quantity) FROM inventory GROUP BY warehouse, product;
Birden çok sütuna göre SQL ROLLUP grubu

En ekleyelim ROLLUPiçin GROUP BYfıkra:

SELECT warehouse, product, SUM(quantity) FROM inventory GROUP BY ROLLUP (warehouse , product);
Birden çok sütunlu SQL ROLLUP

Çıktının yalnızca bir değil, iki analiz düzeyindeki özet bilgilerden oluştuğunu unutmayın:

  • Belirli bir ambar için her ürün satırı kümesinin ardından, toplam envanteri görüntüleyen ek bir özet satırı görünür. Bu satırlarda, productsütundaki değerler  NULL olarak ayarlanmıştır.
  • Tüm satırların ardından, tüm depoların ve ürünlerin toplam envanterini gösteren ekstra bir özet satırı görünür. Bu satırlarda, warehouse ve  product sütunlarındaki değerler  NULL olarak ayarlanır.

Kısmi toplama örneği ile SQL ROLLUP

ROLLUPAşağıdaki örnekte gösterildiği gibi hesaplanan alt toplamların sayısını azaltan kısmi bir toplama gerçekleştirmek için kullanabilirsiniz :

SELECT warehouse, product, SUM(quantity) FROM inventory GROUP BY warehouse, ROLLUP (product);
Kısmi toplama ile SQL ROLLUP

Bu örnekte, sütun ROLLUPiçin productdeğil, yalnızca sütun için bir akşam yemeği toplu özetini yapar warehouse.

Bu eğitimde, ROLLUPtek bir sorgu ile birden çok analiz düzeyi gerçekleştirmek için SQL'i nasıl kullanacağınızı öğrendiniz .

Hiç yorum yok