加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle分析函数三——SUM,AVG,MIN,MAX,COUNT

发布时间:2020-12-12 14:15:37 所属栏目:百科 来源:网络整理
导读:Oracle分析函数三——SUM,AVG,MIN,MAX,COUNT 原创 2009年10月22日 11:27:00 标签: oracle / date / c 11704 原创于2009年08月02日,2009年10月22日迁移至此。 Oracle分析函数——SUM,COUNT SUM 功能描述:该函数计算组中表达式的累积和。 SAMPLE:下例计算

Oracle分析函数三——SUM,AVG,MIN,MAX,COUNT

原创 2009年10月22日 11:27:00
  • 标签:
  • oracle/
  • date/
  • c

原创于2009年08月02日,2009年10月22日迁移至此。


Oracle分析函数——SUM,COUNT

SUM

功能描述:该函数计算组中表达式的累积和。

SAMPLE:下例计算同一经理下员工的薪水累积值

MIN

功能描述:在一个组中的数据窗口中查找表达式的最小值。

SAMPLE:下面例子中dept_min返回当前行所在部门的最小薪水值

MAX

功能描述:在一个组中的数据窗口中查找表达式的最大值。

SAMPLE:下面例子中dept_max返回当前行所在部门的最大薪水值

AVG

功能描述:用于计算一个组和数据窗口内表达式的平均值。

SAMPLE:下面的例子中列c_mavg计算员工表中每个员工的平均薪水报告

SELECT

department_id,

first_name||' '||last_name employee_name,

hire_date,

salary,

MIN(salary) OVER (PARTITION BY department_id order by hire_date) AS dept_min,

MAX(salary) OVER (PARTITION BY department_id order by hire_date) AS dept_max,

AVG(salary) OVER (PARTITION BY department_id order by hire_date) AS dept_avg,

SUM(salary) OVER (PARTITION BY department_id order by hire_date) AS dept_sum/*,

COUNT(*) OVER (ORDER BY salary) AS count_by_salary,

COUNT(*) OVER (ORDER BY salary RANGE BETWEEN 50 PRECEDING AND 150 FOLLOWING) AS count_by_salary_range*/

FROM employees

COUNT

功能描述:对一组内发生的事情进行累积计数,如果指定*或一些非空常数,count将对所有行计数,如果指定一个表达式,count返回表达式非空赋值的计数,当有相同值出现时,这些相等的值都会被纳入被计算的值;可以使用DISTINCT来记录去掉一组中完全相同的数据后出现的行数。

SAMPLE:下面例子中计算每个员工在按薪水排序中当前行附近薪水在[n-50,n+150]之间的行数,n表示当前行的薪水

例如,Philtanker的薪水2200,排在他之前的行中薪水大于等于2200-50的有1行,排在他之后的行中薪水小于等于2200+150的行没有,所以count计数值cnt3为2(包括自己当前行);cnt2值相当于小于等于当前行的SALARY值的所有行数

SELECT

department_id,

COUNT(*) OVER (ORDER BY salary RANGE BETWEEN 50 PRECEDING AND 150 FOLLOWING) AS count_by_salary_range

FROM employees

WHERE department_id in (10,20,30);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读