Oracle sql中的group by 和 having 用法解析
时间: 2023-09-07 21:14:04 浏览: 90
`GROUP BY` 和 `HAVING` 是 SQL 中用于聚合数据的关键字。
`GROUP BY` 用于将表中的数据按照指定的列进行分组,然后对每个分组进行聚合计算。其基本语法为:
```sql
SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;
```
其中,`column1` 是用于分组的列名,`aggregate_function` 是聚合函数,`column2` 是需要进行聚合计算的列名。
例如,以下查询语句使用 `GROUP BY` 将 `orders` 表中的数据按照 `customer_id` 列进行分组,并计算每个客户的订单数量:
```sql
SELECT customer_id, COUNT(order_id)
FROM orders
GROUP BY customer_id;
```
`HAVING` 则用于在 `GROUP BY` 分组后对分组的结果进行筛选,只返回符合条件的分组结果。其基本语法为:
```sql
SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1
HAVING condition;
```
其中,`condition` 是用于筛选分组结果的条件,可以使用聚合函数和逻辑运算符。
例如,以下查询语句使用 `GROUP BY` 将 `orders` 表中的数据按照 `customer_id` 列进行分组,然后筛选出有超过 10 条订单的客户:
```sql
SELECT customer_id, COUNT(order_id)
FROM orders
GROUP BY customer_id
HAVING COUNT(order_id) > 10;
```
需要注意的是,`HAVING` 关键字只能在 `GROUP BY` 后使用,而不能单独使用。如果需要对表中所有数据进行筛选,应该使用 `WHERE` 关键字。