博客
关于我
SQL必知必会 第10课 分组数据
阅读量:179 次
发布时间:2019-02-28

本文共 918 字,大约阅读时间需要 3 分钟。

10.1 数据分组

分组可以将数据分为多个逻辑组,对每个组进行聚集计算。

10.2 创建分组

# GROUP BY 子句指示DBMS按照vend_id 排序并分组数据select vend_id, count(*) as num_prodsfrom productsgroup by vend_id;

在这里插入图片描述

10.3 过滤分组

通过HAVING子句

# 过滤出两个以上订单的分组select cust_id, count(*) as orders from orders group by cust_idhaving count(*) >= 2;

在这里插入图片描述

WHERE 在数据分组前进行过滤,而HAVING 在数据分组之后进行过滤。

# 列出具有两个以上产品且其价格大于等于4的供应商select vend_id, count(*) as onum_prods from productswhere prod_price >= 4group by vend_idhaving count(*) >= 2

在这里插入图片描述

10.4 分组和排序

group by 和 order by 的区别

ORDER BY GROUP BY
对产生的输出排序 对行分组,但输出可能不是分组的顺序
任意列都可以使用 只可能使用选择列或表达式列,而且必须使用每个选择列表达式
不一定需要 如果与聚集函数一起使用列(或表达式),则必须使用

一般在使用GROUP BY子句时,应该也给出ORDER BY子句。这是保证数据正确排序的唯一方法。

# 按订购物品的数目排序输出select order_num, count(*) as items from orderItemsgroup by order_numhaving count(*) >= 3order by items, order_num;

在这里插入图片描述

10.5 select 子句顺序

子句 说明 是否必须使用
SELECT 要返回的列或表达式
FROM 从中检索数据的表 仅在从表选择数据时使用
WHERE 行级过滤
GROUP BY 分组说明 仅在按组计算聚集时使用
HAVING 组级过滤
ORDER BY 输出排序顺序

转载地址:http://jgpn.baihongyu.com/

你可能感兴趣的文章
MySQL中的关键字深入比较:UNION vs UNION ALL
查看>>
mysql中的四大运算符种类汇总20多项,用了三天三夜来整理的,还不赶快收藏
查看>>
mysql中的字段如何选择合适的数据类型呢?
查看>>
MySQL中的字符集陷阱:为何避免使用UTF-8
查看>>
mysql中的数据导入与导出
查看>>
MySQL中的时间函数
查看>>
mysql中的约束
查看>>
MySQL中的表是什么?
查看>>
mysql中穿件函数时候delimiter的用法
查看>>
Mysql中索引的分类、增删改查与存储引擎对应关系
查看>>
Mysql中索引的最左前缀原则图文剖析(全)
查看>>
MySql中给视图添加注释怎么添加_默认不支持_可以这样取巧---MySql工作笔记002
查看>>
Mysql中获取所有表名以及表名带时间字符串使用BetweenAnd筛选区间范围
查看>>
Mysql中视图的使用以及常见运算符的使用示例和优先级
查看>>
Mysql中触发器的使用示例
查看>>
Mysql中设置只允许指定ip能连接访问(可视化工具的方式)
查看>>
mysql中还有窗口函数?这是什么东西?
查看>>
mysql中间件
查看>>
MYSQL中频繁的乱码问题终极解决
查看>>
MySQL为Null会导致5个问题,个个致命!
查看>>