oracle group by 语句:
group by 语句的cube在多种类别统计时很有用可以减轻很多工作,
比如:统计公司各部门、男、女及公司整体平均工资。
sql: select dept_id,sex,avg(salary) from employees_salary
group by cube(dept_id,sex)
就会查出一下结果:
group by cube就是多种组合,oracle会用空来补充
例如:A合B可以返回多少种组合呢?
1- A、B
2- A 、null
3- null、B
4- null、null
grouping(列) 是用来判断此空值是不是cube组合产生的,如果是数据原本就是空就返回0 是cube组合产生的就返回1
grouping 还可以用在havin上,例如我只看各部门及公司男女的平均工资, 不想看部门及公司的整体平均工资:
SQL:
select department_id,sex ,avg(salary) from employees
group by cube(department_id,sex)
having grouping(sex)<>1
order by department_id,sex
结果: