Oracle Reporting 3 - Aggregation Level
To determine the aggregation level in a report, Oracle provides grouping_id and group_id functions.
Grouping_ID:GROUPING_ID returns a single number that enables you to determine the exact GROUP BY level. For each row, GROUPING_ID takes the set of 1's and 0's that would be generated if you used the appropriate GROUPING functions and concatenates them, forming a bit vector. The bit vector is treated as a binary number, and the number's base-10 value is
returned by the GROUPING_ID function. For instance, if you group with the expression CUBE(a, b) the possible values are as follows:

select deptno, job, sum(sal), grouping_id(deptno, job)
from emp
group by cube(deptno, job)
order by deptno nulls last;

Group_ID: The GROUP_ID function lets you distinguish among duplicate groupings. If there are multiple sets of rows calculated for a given level, GROUP_ID assigns the value of 0 to all the rows in the first set. All other sets of duplicate rows for a particular grouping are assigned higher values, starting with 1.
SELECT country_iso_code, SUBSTR(cust_state_province,1,12), SUM(amount_sold),
GROUPING_ID(country_iso_code, cust_state_province) GROUPING_ID, GROUP_ID()
FROM sales, customers, times, countries
WHERE sales.time_id=times.time_id AND sales.cust_id=customers.cust_id
AND customers.country_id=countries.country_id AND times.time_id= '30-OCT-00'
AND country_iso_code IN ('FR', 'ES')
GROUP BY GROUPING SETS (country_iso_code,
ROLLUP(country_iso_code, cust_state_province));

Groupings: (country_id, cust_state_province), (country_id), (country_id), and ().
You can filter out duplicate (region) groupings from the previous example by adding a HAVING clause condition GROUP_ID()=0 to the query.
Grouping_ID:GROUPING_ID returns a single number that enables you to determine the exact GROUP BY level. For each row, GROUPING_ID takes the set of 1's and 0's that would be generated if you used the appropriate GROUPING functions and concatenates them, forming a bit vector. The bit vector is treated as a binary number, and the number's base-10 value is
returned by the GROUPING_ID function. For instance, if you group with the expression CUBE(a, b) the possible values are as follows:

select deptno, job, sum(sal), grouping_id(deptno, job)
from emp
group by cube(deptno, job)
order by deptno nulls last;

Group_ID: The GROUP_ID function lets you distinguish among duplicate groupings. If there are multiple sets of rows calculated for a given level, GROUP_ID assigns the value of 0 to all the rows in the first set. All other sets of duplicate rows for a particular grouping are assigned higher values, starting with 1.
SELECT country_iso_code, SUBSTR(cust_state_province,1,12), SUM(amount_sold),
GROUPING_ID(country_iso_code, cust_state_province) GROUPING_ID, GROUP_ID()
FROM sales, customers, times, countries
WHERE sales.time_id=times.time_id AND sales.cust_id=customers.cust_id
AND customers.country_id=countries.country_id AND times.time_id= '30-OCT-00'
AND country_iso_code IN ('FR', 'ES')
GROUP BY GROUPING SETS (country_iso_code,
ROLLUP(country_iso_code, cust_state_province));

Groupings: (country_id, cust_state_province), (country_id), (country_id), and ().
You can filter out duplicate (region) groupings from the previous example by adding a HAVING clause condition GROUP_ID()=0 to the query.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/638844/viewspace-1061063/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Error reporting for dbusError
- oracle事務隔離級別transaction isolation level初識Oracle
- [20220121]Hash Aggregation.txt
- MongoDB 新手入門 - AggregationMongoDB
- PostgreSQL DBA(62) - PG 12 More progress reportingSQL
- Oracle 標準審計,設定AUDIT_SYSLOG _LEVEL引數Oracle
- 2_深入解析Oracle ASSM結構之Level 2 Bitmap BlockOracleSSMBloC
- Django 中 Aggregation聚合的使用Django
- 翻譯(九)——Clustered Indexes: Stairway to SQL Server Indexes Level 3IndexAISQLServer
- Level Up
- oracle 3Oracle
- MongoDB系列--深入理解MongoDB聚合(Aggregation )MongoDB
- DevExpress v17.2新版亮點—.NET Reporting篇(二)devExpress
- DevExpress v17.2新版亮點—.NET Reporting篇(一)devExpress
- 記一次kafka的high level和low levelKafka
- oracle不同的事務transaction隔離級別isolation level進一步理解Oracle
- natas(level0-level14)通關詳細指南(一)
- 懂你英語level4 unit3 part1 Political terms
- CSS LEVEL4CSS
- E. Level Up
- E - Level K Palindrome
- oracle資料庫事務transaction隔離級別isolation level的選擇依據Oracle資料庫
- 英語流利說懂你英語 Level5 Unit3 Part3 Vocabulary - Describing Actions
- Microsoft Sql Server 2017 Reporting Services 不支援安裝在DC上ROSSQLServer
- c++類與類的聚合(Aggregation)關係C++
- 使用aggregation API擴充套件你的kubernetes APIAPI套件
- BUU_jarvisoj_level0JAR
- RuneScape - To verify your level of combatBAT
- [LintCode] Binary Tree Level Order
- FUNBOX-5: NEXT LEVEL
- 英語流利說 Level3 Unit2 Part2 - Sports&Injuries
- Binary-tree-level-order-traversal
- Binary Tree Level Order Traversal [LEETCODE]LeetCode
- 電平(level)&脈衝(pulse)
- [20220124]index split level.txtIndex
- 懂你英語Level6 Unit3 Part1 Listening Cyber Theft2
- PAT (Basic Level) Practice 1001 害死人不償命的(3n+1)猜想
- Dynamics CRM CRM Reporting Error: Error occurred while fetching the data extension的解決方法ErrorWhile
- Oracle 11G RAC叢集安裝(3)——安裝OracleOracle