设为首页 收藏本站
查看: 747|回复: 0

[经验分享] SQL数据排序与分组

[复制链接]

尚未签到

发表于 2016-11-11 10:52:26 | 显示全部楼层 |阅读模式
 一、为什么要对数据进行分组


  数据分组:是按照逻辑次序把具有重复值的字段进行合并。

  二、GROUP BY子句


  语法

SELECT column1,column2
FROM table1,table2
WHERE conditions
GROUP BY column1,column2
ORDER BY column1,column2;
 1、分组函数

  典型的分组函数—也就是用于GROUP BY子句对数据进行划分的函数—包括AVG、MAX、MIN、SUM、COUNT。

  2、对选中的数据进行分组

  数据分组是个简单的过程。被选中的字段(查询中SELECT之后的字段列表)才能在GROUP BY子句里引用;如果字段在SELECT语句里找不到,就不能用于GROUP BY子句。

  注:在对数据进行分组时,分组字段的次序不一定要与SELECT子句里字段次序相同。

  3、创建分组和使用汇总函数

  SELECT语句在使用GROUP BY子句时必须满足一定条件。特别是被选中的字段必须出现在GROUP BY子句里,除了汇总函数。

  注:具体数值在排序时位于NULL值之前,字符型在排序时位于NULL值之后。

  4、以整数代表字段名称

  像ORDER BY子句一样,GROUP BY子句里也可以用整数代表字段名称。

  三、GROUP BY和ORDER BY


  ORDER BY子句专门用于对查询得到的数据进行排序,GROUP BY子句也把查询得到的数据排序为适当分组的数据,因此,GROUP BY子句也可以像ORDER BY子句那样用于数据排序。

  使用GROUP BY子句实现排序操作的区别与缺点:

  1、所有被选中的、非汇总函数的字段必须列在GROUP BY子句里;

  2、除非需要使用汇总函数,否则使用GROUP BY子句进行排序通常是没有必要的。

  四、CUBE和ROLLUP语句


  ROLLUP语法:

  GROUP BY ROLLUP(ordered column list of grouping sets)

  MySQL ROLLUP语法:

  GROUP BY order column list of grouping sets WITH ROLLUP

  ROLLUP语句的工作方式:

  1、在完成了基本的分组数据汇总以后,

  2、按照从右向左的顺序,每次去掉字段列表中的最后一个字段,再对剩余的字段进行分组统计,并将获得的小计结果插入返回表中,被去掉的字段位置使用NULL填充。

  3、最后,再对全表进行一次统计,所有的字段位置均使用NULL填充。

  CUBE语法:

  GROUP BY CUBE(column list of grouping sets)

  CUBE语句在SQL Server和Oracle中都可以使用,MySQL尚不支持该语句。

  CUBE语句的工作方式:

  1、它对分组列表中的所有字段进行排列组合,并根据每一种组合结果,分别进行统计汇总。    2、最后,CUBE语句也会对全表进行统计。

  五、HAVING子句


  HAVING子句必须跟在GROUP BY子句之后,在ORDER BY子句之前。

语法:
SELECT column1,column2
FROM table1,table2
WHERE contidions
GROUP BY column1,column2
HAVING conditions
ORDER BY column1,column2;
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-298855-1-1.html 上篇帖子: SQL语句大全(转链接) 下篇帖子: 简单sql的题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表