在Oracle數據庫中,GROUPING
函數用于確定是否對特定列進行了分組
以下是如何在Oracle中使用GROUPING
函數進行數據匯總的示例:
假設我們有一個名為employees
的表,其結構如下:
CREATE TABLE employees (
id NUMBER,
department_id NUMBER,
name VARCHAR2(50),
salary NUMBER
);
現在,我們想要查詢每個部門的員工數量和平均工資。我們可以使用GROUP BY
子句按部門對數據進行分組,并使用AVG()
和COUNT()
聚合函數計算平均工資和員工數量。然后,我們可以使用GROUPING
函數來區分分組后的數據和未分組的數據。
以下是查詢示例:
SELECT
department_id,
COUNT(*) AS employee_count,
AVG(salary) AS avg_salary,
GROUPING(department_id) AS is_grouped
FROM
employees
GROUP BY
ROLLUP(department_id);
在這個查詢中,我們使用了ROLLUP
函數來創建分組的匯總數據。ROLLUP
函數會生成多個分組級別,包括所有部門的匯總數據(department_id
為NULL)。
GROUPING
函數接受一個參數,即要檢查的列名。在這個例子中,我們檢查department_id
列。如果department_id
列被分組,GROUPING(department_id)
將返回1,否則返回0。
查詢結果將顯示每個部門的員工數量、平均工資以及一個標志,指示該行是否為匯總數據。