oracle表中group by用法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在Oracle 数据库中,GROUP BY 是用于按照指定的列或表达式进行分组的语句,通常与聚合函数一起使用。

以下是GROUP BY 的基本用法:
1. 按列进行分组:可以使用一个或多个列来指定要进行分组的列。

例如,假设有一个名为"orders" 的表,其中包含"customer_id" 和"order_amount" 两列,我们可以按照"customer_id" 列进行分组,如下所示:
```sql
SELECT customer_id, SUM(order_amount)
FROM orders
GROUP BY customer_id;
```
2. 按表达式进行分组:除了按列进行分组,还可以按照一个或多个表达式进行分组。

表达式可以是任何有效的SQL 表达式,包括函数、运算符和列别名等。

例如,我们可以按照每个客户的订单总金额进行分组,如下所示:```sql
SELECT CASE
WHEN order_amount < 100 THEN 'Low'
WHEN order_amount >= 100 AND order_amount < 1000 THEN 'Medium'
ELSE 'High'
END AS amount_category,
COUNT(*)
FROM orders
GROUP BY CASE
WHEN order_amount < 100 THEN 'Low'
WHEN order_amount >= 100 AND order_amount < 1000 THEN 'Medium'
ELSE 'High'
END;
```
3. 结合聚合函数使用:GROUP BY 通常与聚合函数(如SUM、COUNT、AVG 等)一起使用,可以在分组的基础上计算每个组的汇总数据。

例如,计算每个客户的订单总金额和平均订单金额,如下所示:
```sql
SELECT customer_id, SUM(order_amount) AS total_amount, AVG(order_amount) AS avg_amount
FROM orders
GROUP BY customer_id;
```
注意事项:
- SELECT 语句中的列必须是GROUP BY 子句中列的子集,或者是聚合函数的
参数。

- 在GROUP BY 子句中,可以使用列的位置(如1、2、3)或列别名(如别名as 列名)来引用列。

- GROUP BY 返回每个组的唯一值,因此通常需要与聚合函数一起使用。

GROUP BY 是SQL 查询中常用的功能,它可以帮助我们对数据进行分组,进行更深入的统计和分析。

相关文档
最新文档