sql group句子

原创 2013年12月04日 23:13:29
rollup

SELECT employee_id,department_id,job_id,SUM(salary)

FROM   employees

WHERE  department_id <60

GROUP  BY ROLLUP (department_id,job_id,employee_id);

 执行n+1次分组然后union,顺序是employee_id;job_id;department_id;空一共四次(从右至左每次以一个分组最后不分组求一次总和)

 

 

nothing

SELECT employee_id,department_id,job_id,SUM(salary)

FROM   employees

WHERE  department_id <60

GROUP  BY department_id,job_id,employee_id;

按顺序检测,先按department_id分组计算然后一个部门的然后这个部门内job_id分组计算一次然后employee_id再分组计算一次,然后接着下一个部门分组……..执行下去 注:每次三个都同时被gruoping了

 

 

cube

SELECT employee_id,department_id,job_id,SUM(salary)

FROM   employees

WHERE  department_id <60

GROUP  BY CUBE (department_id,job_id,employee_id);

执行2的n次方次分组计算,排列组合;一般用的时候都带order by排序确定谁先显示

 

 

Grouping

以使用Grouping 函数; 没有被Grouping到返回1,否则返回0

SELECT employee_id,department_id,job_id,SUM(salary),GROUPING(employee_id),GROUPING(department_id),GROUPING(job_id)

FROM employees

WHERE department_id < 60

GROUP BY department_id,job_id,employee_id;

 

SELECT employee_id,department_id,job_id,SUM(salary),GROUPING(employee_id),GROUPING(department_id),GROUPING(job_id)

FROM employees

WHERE department_id < 60

GROUP BY ROLLUP (department_id,job_id,employee_id);

 

SELECT employee_id,department_id,job_id,SUM(salary),GROUPING(employee_id),GROUPING(department_id),GROUPING(job_id)

FROM employees

WHERE department_id < 60

GROUP BY CUBE (department_id,job_id,employee_id);

 

GROUPING SETS

使用Grouping Set 来代替多次UNION

SELECT department_id,job_id,manager_id,AVG(salary)

FROM   employees

GROUP  BY GROUPING SETS ((department_id,job_id),(job_id,manager_id));

相当于

SELECT department_id,job_id,manager_id,AVG(salary)

FROM   employees

GROUP  BY  (department_id,job_id);

UNION

SELECT department_id,job_id,manager_id,AVG(salary)

FROM   employees

GROUP  BY GROUPING SETS (job_id,manager_id);

相关文章推荐

SQL中GROUP BY的用法

  • 2014年09月26日 20:06
  • 433KB
  • 下载

SQL 统计分组 Group By和Compute By的整理

SQL 数据统计方面常用到的数据分组,Gruop By和Compute By之间的使用和区别,以及Having和Where条件字句之间的区别!...

SQL Maestro Group SQLite Maestro 14.3.0.1

  • 2014年03月16日 23:43
  • 3.21MB
  • 下载

PHP模拟SQL的GROUP BY算法

PHP模拟SQL的GROUP BY算法

GROUP BY分组查询与SQL执行顺序

转自:http://blog.163.com/shexinyang@126/blog/static/1367393122013526113822666/ 在SQL中使用GROUP BY来对SEL...

组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化 .

1组函数 avg(),sum(),max(),min(),count()案例: selectavg(sal),sum(sal),max(sal),min(sal),count(sal) f...

SQL - group by

(本文中SQL语句均在Mysql v5.1中验证) group by 是按照表中的某些个属性对表进行分组,然后再用having子句对得到的分组进行筛选,最后使用  order by 则是对已经分好...

sql中的group by 和 having 用法解析

sql中的group by 和 having 用法解析
  • yao1319
  • yao1319
  • 2015年06月24日 19:06
  • 77
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sql group句子
举报原因:
原因补充:

(最多只允许输入30个字)