有个Oracle语句没看懂,帮帮忙呀
大家好,有一个句话没看明白,其中函数和字段的对应什么意思呀,麻烦给翻译一下。SELECT last_name, hire_date, salary, SUM(salary) OVER (ORDER BY hire_date RANGE NUMTOYMINTERVAL(1,'') PRECEDING) AS t_sal FROM employees 谢谢了 这个问题需要分解一下来回答:
1.
numtoyminterval函数——数字转换函数
语法:NUMTOYMINTERVAL ( n , 'char_expr' )
char_expr:日期描述,可以是YEAR和MONTH;
作用:可以将数字转换成相应的日期单位时间
比如:NUMTOYMINTERVAL ( 1, 'MONTH' ) 表示一个月
NUMTOYMINTERVAL ( 1, 'YEAR' ) 表示一年
通常当我们使用add_month添加月时,如果输入是本月月底的日期,那么得到的也是月底的日期,比如add_month(to_date('2007-02-28','yyyy-mm-dd'),1)得到的就会是'2007-03-31',而不是'2007-03-28'。
此时,如果使用的是to_date('2007-02-28','yyyy-mm-dd')+numtoyminterval(1,'month'),那么得到的就是'2007-03-28'。
2.
SUM(salary) OVER (ORDER BY hire_date)——这是一个分析函数
表示:按照hire_date字段的升序,对salary进行累加,如果只是SUM(salary),那么得到的每一行结果都是salary字段值的总和。
3.
SUM(salary) OVER (ORDER BY hire_date RANGE NUMTOYMINTERVAL(1,'char_expr') PRECEDING)
我想,你一定写掉了参数char_expr,此参数可以是YEAR或者MONTH!
表示:按照hire_date的升序,累加一年(或者一个月)之内的salary。到了下一年(或月),重新开始累加。
其他的就不用我解释了吧。 感谢水滴了! 不客气 学习了 3楼8错
页:
[1]