首页投稿(暂停使用,暂停投稿)

Oracle_SQL函数-分组函数

2016-06-22  本文已影响141人  MPPC

分组函数

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;
SELECT COUNT(*)
FROM    employees
WHERE  department_id = 50;
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 过滤分组:

  1. 行已经被分组。
  2. 使用了组函数。
  3. 满足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;
上一篇 下一篇

猜你喜欢

热点阅读