SQL必知必会 第10课 分组数据

快来打我* 2022-11-07 11:55 252阅读 0赞

10.1 数据分组

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

10.2 创建分组

  1. # GROUP BY 子句指示DBMS按照vend_id 排序并分组数据
  2. select vend_id, count(*) as num_prods
  3. from products
  4. group by vend_id;

在这里插入图片描述

10.3 过滤分组

通过HAVING子句

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

在这里插入图片描述
WHERE 在数据分组前进行过滤,而HAVING 在数据分组之后进行过滤。

  1. # 列出具有两个以上产品且其价格大于等于4的供应商
  2. select vend_id, count(*) as onum_prods
  3. from products
  4. where prod_price >= 4
  5. group by vend_id
  6. having count(*) >= 2

在这里插入图片描述

10.4 分组和排序

group by 和 order by 的区别






















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

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

  1. # 按订购物品的数目排序输出
  2. select order_num, count(*) as items
  3. from orderItems
  4. group by order_num
  5. having count(*) >= 3
  6. order by items, order_num;

在这里插入图片描述

10.5 select 子句顺序









































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

发表评论

表情:
评论列表 (有 0 条评论,252人围观)

还没有评论,来说两句吧...

相关阅读