MySql 分组数据

创建分组

分组是在select语句的group by字句中建立的。

举例:select vend_id, count(*) as num_prods from products group by vend_id;

结果:

\1.PNG
\1.PNG

在具体使用group by字句前,需要知道一些重要的规定。

  • group by字句可以包含任意数目的列。这使得能对分组进行嵌套,为数据分组提供更精细化的控制。
  • 如果在group by字句中嵌套了分组,数据将在最后规定的分组上进行汇总。
  • group by字句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在select中使用表达式,则必须在group by字句中指定相同的表达式。不能使用别名。
  • 如果分组列中具有null值,则null将作为一个分组返回。
  • group by字句必须出现在where字句之后,order by字句之前。

过滤分组

过滤分组使用having

having和where的差别:where在数据分组前进行过滤,having在数据分组后进行过滤。

举例:select vend_id, count(*) as num_prods from products where prod_price >= 10 group by vend_id having count(*) >=2

说明:列出具有2个(含)以上、价格为10(含)以上产品的供应商

\2.PNG
\2.PNG

select 字句顺序

一下为select 语句中使用必须遵循的次序:

字句          说明                是否必须使用
select          要返回的列或表达式     是
from           从中检索数据的表      仅在从表选择数据时使用
where          行级过滤            否
group by        分组说明            仅在按组计算聚集是使用
having         组级过滤            否
order by        输出排序顺序         否
limit          要检索的行数         否


参考书籍:

  • MySQL必知必会
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.MySQL数据库 2.SQL语句 第一节课 ###1(MySQL数据库)数据库概念.avi 5...
    码了个农啵阅读 1,240评论 1 16
  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 1,786评论 0 2
  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 1,255评论 0 7
  • [iOS 单元测试之XCTest详解](http://blog.csdn.net/hello_hwc/articl...
    三岁就很乖阅读 214评论 0 0
  • I exist because you need me! 如果我真的存在,也是因为你需要我! 如果命运是一条孤独的...
    九尾妖阅读 546评论 2 3