我想驗證我的理解基於一個示例,因爲這將用於構建我的項目的等效查詢。這是https://oracle-base.com/articles/misc/rollup-cube-grouping-functions-and-grouping-sets#grouping_setsOracle - GROUPING_ID與GROUPING SETS
SELECT fact_1_id,
fact_2_id,
fact_3_id,
SUM(sales_value) AS sales_value,
GROUPING_ID(fact_1_id, fact_2_id, fact_3_id) AS grouping_id
FROM dimension_tab
GROUP BY GROUPING SETS((fact_1_id, fact_2_id), (fact_1_id, fact_3_id))
ORDER BY fact_1_id, fact_2_id, fact_3_id;
基於上面的查詢引用一個例子,
我可以說,會有兩個subtototals,與第一組羣由
FACT_1_ID, FACT_2_ID
,另一組由FACT_1_ID, FACT_3_ID
?GROUPING_ID
for 1指FACT_1_ID, FACT_2_ID
?而2的GROUPING_ID
是指FACT_1_ID, FACT_3_ID
的組?在從點2繼續由於
GROUPING_ID
1指的是基團由FACT_1_ID, FACT_2_ID
,因此柱FACT_3_ID
保持NULL
,因爲它是不被用作GROUP BY
子句。
我的理解是否正確?
這是否意味着'1'表示GROUP BY子句會忽略/忽略該特定列?即含義所有'0'將被包含在group by子句中以生成小計。 感謝您深入瞭解幕後真正發生的事情。有助於理解! – user1008697