本文共 918 字,大约阅读时间需要 3 分钟。
分组可以将数据分为多个逻辑组,对每个组进行聚集计算。
# GROUP BY 子句指示DBMS按照vend_id 排序并分组数据select vend_id, count(*) as num_prodsfrom productsgroup by vend_id;
通过HAVING子句
# 过滤出两个以上订单的分组select cust_id, count(*) as orders from orders group by cust_idhaving count(*) >= 2;
# 列出具有两个以上产品且其价格大于等于4的供应商select vend_id, count(*) as onum_prods from productswhere prod_price >= 4group by vend_idhaving count(*) >= 2
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;
子句 | 说明 | 是否必须使用 |
---|---|---|
SELECT | 要返回的列或表达式 | 是 |
FROM | 从中检索数据的表 | 仅在从表选择数据时使用 |
WHERE | 行级过滤 | 否 |
GROUP BY | 分组说明 | 仅在按组计算聚集时使用 |
HAVING | 组级过滤 | 否 |
ORDER BY | 输出排序顺序 | 否 |
转载地址:http://jgpn.baihongyu.com/