Oracle
 sql >> Baza danych >  >> RDS >> Oracle

funkcja Oracle Rollup z wieloma kolumnami

Uważam, że łatwiej jest określić dokładne zestawy, których potrzebuję, za pomocą klauzuli 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),());

Podejrzewam, że jest bardziej wydajny, ponieważ bezpośrednio określa poziomy do obliczenia.

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

CUBE i ROLLUP są przydatne do automatycznego generowania dużej liczby poziomów agregacji (np. każdy poziom w hierarchii wymiarowej) i może zaistnieć przypadek użycia GROUPING ID, jeśli chcesz wyeliminować mały podzbiór poziomów z dużego wygenerowanego przez moduł CUBE zestaw, ale ZESTAW GRUPOWANIA jest precyzyjnie zaprojektowany do określania określonych poziomów agregacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zainstaluj cx_oracle dla Pythona

  2. Metoda zbierania:procedura przycinania w bazie danych Oracle

  3. Pełna ścieżka instalacji JDK dla Oracle SQL Developer

  4. Tworzenie tymczasowej tabeli Oracle o takiej samej strukturze tabeli jak istniejąca tabela

  5. Jak deklarować i używać zmiennych w PL/SQL, tak jak robię to w T-SQL?