ORACLE SQL分组函数

本文介绍了SQL中的分组函数,包括AVG、COUNT、MAX、MIN、SUM,说明了其作用和语法示例。还讲解了GROUP BY子句,强调SELECT列表中未在组函数的列应包含在其中。同时指出不能在WHERE子句用组函数,可在HAVING子句使用,且介绍了HAVING子句过滤分组的条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分组函数:

那什么是分组函数呢?

分组函数就是作用于一组数据,并对一组数据返回一个值。

分组函数共有5种类型:

AVG(平均值)COUNT(计数函数)MAX(最大值)MIN (最小值)SUM (合计函数)

那么它的语法是怎么写的呢:请看下图

下面看下平均值和合计函数的写法:

SELECT AVG(salary), SUM(salary)

FROM   employees

WHERE  job_id LIKE '%REP%';

效果图如下:

最小值和最大值的写法:可以对任意数据类型的数据使用 MIN 和 MAX 函数

SELECT MIN(hire_date), MAX(hire_date)

FROM   employees;

效果图如下:

COUNT(计数)函数:COUNT(*) 返回表中记录总数,适用于任意数据类型,COUNT(expr) 返回expr不为空的记录总数。

SELECT COUNT(*)

FROM   employees

WHERE  department_id = 50;

效果图如下:

DISTINCT 关键字,去重复,COUNT(DISTINCT expr)返回expr非空且不重复的记录总数

SELECT COUNT(DISTINCT department_id)

FROM   employees;

效果图如下:

GROUP BY 子句

在SELECT 列表中所有未包含在组函数中的列都应该包含在 GROUP BY 子句中,包含在 GROUP BY 子句中的列不必包含在SELECT 列表中。

SELECT   department_id, AVG(salary)

FROM     employees

GROUP BY department_id ;

还可以在GROUP BY中包含多个类:

SELECT   department_id dept_id, job_id, SUM(salary)

FROM     employees

GROUP BY department_id, job_id ;

效果图:

非法使用组函数,不能在 WHERE 子句中使用组函数,可以在 HAVING 子句中使用组函数。

HAVING 子句

使用 HAVING 过滤分组:

1. 行已经被分组。

2. 使用了组函数。

3. 满足HAVING 子句中条件的分组将被显示

SELECT   department_id, MAX(salary)

FROM     employees

GROUP BY department_id

HAVING   MAX(salary)>10000 ;

效果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值