什么是分组函数
组函数类型:主要有6种
AVG
- 平均COUNT
- 计数MAX
- 最大MIN
- 最小SUM
- 求和STDDEV
- 方差组函数语法
SELECT [column,] group_function(column), ...
FROM table
[WHERE condition]
[GROUP BY column]
[ORDER BY column]
SELECT AVG(salary), MAX(salary),
MIN(salary), SUM(salary)
FROM employees
WHERE job_id LIKE '%REP%'
SELECT MIN(hire_date), MAX(hire_date)
FROM employees;
COUNT(计数)
函数
COUNT(*)
返回表中记录总数,适用于任意数据类型。
SELECT COUNT(*)
FROM employees
WHERE department_id = 50;
COUNT(expr)
返回expr不为空的记录总数。
SELECT COUNT(commission_pct)
FROM employees
WHERE department_id = 50;
SELECT AVG(commission_pct)
FROM employees;
--
Select avg(commission_pct),sum(commission_pct)/107,
sum(commission_pct)/count(commission_pct)
From employees;
-- 查看结果的不同
SELECT AVG(NVL(commission_pct, 0))
FROM employees
SELECT COUNT(DISTINCT department_id)
FROM employees
SELECT column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];
SELECT department_id, AVG(salary)
FROM employees
GROUP BY department_id
SELECT AVG(salary)
FROM employees
GROUP BY department_id
SELECT department_id dept_id, job_id, SUM(salary)
FROM employees
GROUP BY department_id, job_id
-- 错误的示例代码
SELECT department_id, COUNT(last_name)
FROM employees
-- SELECT department_id, COUNT(last_name)
-- *
-- ERROR at line 1:
-- ORA-00937: not a single-group group function
-- 错误的示例代码
SELECT department_id, AVG(salary)
FROM employees
WHERE AVG(salary) > 8000
GROUP BY department_id;
-- WHERE AVG(salary) > 8000
-- *
-- ERROR at line 3:
-- ORA-00934: group function is not allowed here
-- WHERE 子句中不能使用组函数
使用 HAVING 过滤分组:
SELECT column, group_function
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column];
-- 示例
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary)>10000
SELECT MAX(AVG(salary))
FROM employees
GROUP BY department_id;
以上就是Oracle_SQL函数-分组函数的详细内容,更多关于Oracle_SQL函数-分组函数的资料请关注九品源码其它相关文章!