sql >> Databáze >  >> RDS >> Oracle

kumulativní funkce Oracle s více sloupci

Považuji za snazší specifikovat přesné sady, které potřebuji, pomocí klauzule GROUPING SET:

WITH data(val1, val2, val3) AS
     ( SELECT 'a' ,'a-details' ,'1' FROM DUAL
     UNION ALL
     SELECT 'b' ,'b-details' ,'2' FROM DUAL
     UNION ALL
     SELECT 'c' ,'c-details' ,'3' FROM DUAL
     )
SELECT NVL(val1,'Total Result'),
     val2,
     SUM(val3) tot
from data
group by grouping sets ((val1, val2),());

Mám podezření, že je efektivnější, protože přímo určuje úrovně, které se mají vypočítat.

http://sqlfiddle.com/#!4/8301d/3

CUBE a ROLLUP jsou užitečné pro automatické generování velkého počtu agregačních úrovní (např. každá úroveň v dimenzionální hierarchii) a může nastat případ použití GROUPING ID, pokud chcete eliminovat malou podmnožinu úrovní z velké CUBE generované set, ale GROUPING SET je přesně navržen pro specifikaci konkrétních úrovní agregace.



  1. jak přenést připojení dbcp k připojení Oracle?

  2. MySQL:tisk dat pouze jednou pro každé seskupení

  3. Mysql2::Chyba:Přístup odepřen uživateli 'test'@'localhost' do databáze 'depot_test'

  4. nPLS-00306:nesprávný počet nebo typy argumentů ve volání