gbase8s GROUP BY

        可选 GROUP BY 和 HAVING 子句向 SELECT 语句添加功能。可以在基本 SELECT 语句中包括一个或全部两个子句来增大处理聚集的能力。
GROUP BY 子句组合类似的行,针对 Projection 子句中列出的每个列,为具有相同值的每组行生成单一结果行。HAVING 子句在构成组之后对那些组设置条件。可以不带 HAVING 子句使用 GROUP BY 子句或不带 GROUP BY 子句使用 HAVING 子句。

1.GROUP BY 子句

GROUP BY 子句将表分为几组。此子句通常与为每个这样的组生成总结值的聚集函数组合。编写 SELECT 语句中的某些示例显示了应用于整个表的聚集函数的用法。本章说明应用于行组的聚集函数。
使用不带聚集的 GROUP BY 子句与在 SELECT 子句中使用 DISTINCT(或 UNIQUE)关键字很相似。下列查询在选择特定列中描述。
 

SELECT DISTINCT customer_num FROM orders;

SELECT customer_num FROM orders GROUP BY customer_num;

结果

customer_num

101

104

106

110

⋮

124

126

127

GROUP BY 子句将行收集到组中,因此每一组中的每一行具有相同的客户号。在没有选择任何其它列的情况下,结束是唯一 customer_num 值的列表。
GROUP BY 子句的功能在将它与聚集函数配合使用时更明显。
下列查询检索每个订单的商品数和所有商品的总价。

SELECT order_num, COUNT (*) number, SUM (total_price) price FROM items GROUP BY order_num;


order_num number price 
1001 1 $250.00 
1002 2 $1200.00 
1003 3 $959.00
1004 4 $1416.00
 ⋮ 
1021 4 $1614.00 
1022 3 $232.00 
1023 6 $824.00

GROUP BY 子句导致 items 表的行数被收集为组,每个组由具有相同 order_num 值的行组成(即,将每个订单的商品收集在一起)。在数据库服务器构成组之后,就在每个组中应用聚集行数 COUNT 和 SUM 。

对每一组返回每一行。它还使用标号来为 COUNT 和 SUM 表达式的结果提供名称,如下所示。该结果将 items 表的行收集到具有相同订单号的组中,并计算每个组中行的 COUNT 和价格的 SUM。
不能在 GROUP BY 子句中包含 TEXT 、BYTE 、CLOB 或 BLOB 列。要进行分组,必须能够进行排序,并且这些数据类型不存在自然排序顺序。
与 ORDER BY 子句不同,GROUP BY 子句不对数据进行排序。如果想要按特定顺序对数据进行排序,或在投影列表中的聚集上排序,那么在 GROUP BY 子句之后包含 ORDER BY 子句。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值