数据库教程-Oracle Having子句

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

在本教程中将学习如何使用Oracle HAVING子句过滤由GROUP BY子句返回分组。

Oracle HAVING子句简介

HAVING子句是SELECT语句的可选子句。它用于过滤由GROUP BY子句返回的行分组。 这就是为什么HAVING子句通常与GROUP BY子句一起使用的原因。

以下说明了OracleHAVING子句的语法:

SELECT     column_list FROM     T GROUP BY     c1 HAVING     group_condition; 

在这个语句中,HAVING子句紧跟在GROUP BY子句之后。如果使用不带GROUP BY子句的HAVING子句,则HAVING子句将像WHERE子句那样工作。

请注意,HAVING子句过滤分组的行,而WHERE子句过滤行。这是HAVINGWHERE子句之间的主要区别。

Oracle HAVING子句的例子

我们将使用示例数据库中的order_items表进行演示。

Oracle Having子句

1. 简单的Oracle HAVING示例

以下语句使用GROUP BY子句从order_items表中检索订单及其总金额的值:

SELECT     order_id,     SUM( unit_price * quantity ) order_value FROM     order_items GROUP BY     order_id ORDER BY     order_value DESC; 

执行上面查询语句,得到以下结果 –

Oracle Having子句

要查找总金额值大于1百万的订单,请按如下所示添加HAVING子句:

SELECT     order_id,     SUM( unit_price * quantity ) order_value FROM     order_items GROUP BY     order_id HAVING     SUM( unit_price * quantity ) > 1000000 ORDER BY     order_value DESC; 

执行上面查询语句,得到以下结果 –

Oracle Having子句

在这个例子中:

  • 首先,GROUP BY子句通过订单的ID对订单进行分组,并使用SUM()函数计算每个订单的总金额。
  • 然后,HAVING子句过滤所有值小于或等于1,000,000的订单。

2. Oracle HAVING具有复杂的条件示例

可以在HAVING子句中使用复杂过滤条件来过滤分组。
例如,以下语句查找值大于500,000的订单,并且每个订单中的产品数量在1012之间:

SELECT     order_id,     COUNT( item_id ) item_count,     SUM( unit_price * quantity ) total FROM     order_items GROUP BY     order_id HAVING     SUM( unit_price * quantity ) > 500000 AND     COUNT( item_id ) BETWEEN 10 AND 12 ORDER BY     total DESC,     item_count DESC; 

执行上面查询语句,得到以下结果 –

Oracle Having子句

在本教程中,您学习了如何使用Oracle HAVING子句过滤由GROUP BY子句返回的行分组。

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 只为你绽放。

本文固定链接: http://kua0.com/2019/01/16/数据库教程-oracle-having子句/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注