- Oracle数据库是什么?
- Oracle 11g安装教程
- Oracle 12C安装
- Oracle数据库和实例
- 连接到Oracle数据库
- Oracle示例数据库
- 导入Oracle示例数据库
- Oracle基础入门
- Oracle数据定义
- Oracle数据类型
- Oracle修改数据
- Oracle查询数据
- Oracle连接表
- Oracle操作符
- Oracle约束
- Oracle高级部分
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
子句过滤行。这是HAVING
和WHERE
子句之间的主要区别。
Oracle HAVING子句的例子
我们将使用示例数据库中的order_items
表进行演示。
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;
执行上面查询语句,得到以下结果 -
要查找总金额值大于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;
执行上面查询语句,得到以下结果 -
在这个例子中:
- 首先,
GROUP BY
子句通过订单的ID对订单进行分组,并使用SUM()函数计算每个订单的总金额。 - 然后,
HAVING
子句过滤所有值小于或等于1,000,000
的订单。
2. Oracle HAVING具有复杂的条件示例
可以在HAVING
子句中使用复杂过滤条件来过滤分组。
例如,以下语句查找值大于500,000
的订单,并且每个订单中的产品数量在10
到12
之间:
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
子句过滤由GROUP BY
子句返回的行分组。
下一篇:Oracle子查询
扫描二维码
程序员编程王