oracle学习笔记(四)-- 数学函数

一、数学函数

名称

格式

功能

实例

abs

abs( number )

取绝对值

abs(-23) return 23

abs(-23.6) return 23.6

acos

acos( number )

arc cosine

acos(0.2) return 1.36943840600457

acos(0.35) return 1.21322522314939

asin

asin( number )

arc sine

asin(0.2) return 0.201357920790331

asin(-0.15) return -0.150568272776686

atan

atan( number

arc tangent

atan(0.35) return 0.336674819386727

atan(-0.15) return -0.148889947609497

atan2

atan2( n, m )

N,m arc tangent

atan2(0.2, 0.3) return 0.588002603547568

atan2(0.35, -0.15) return 1.97568811307998

cos

cos( number)

cosine

cos(0.35) return 0.939372712847379

cos(-3.15) return -0.999964658471342

sin

sin( n )

sine

sin(3) return 0.141120008059867

sin(5.2) return -0.883454655720153

sinh

sinh( n )

Hyperbolic sine

sinh(3) return 10.0178749274099

sinh(5.2) return 90.6333626553652

tan

tan( n )

tangent

tan(3) return -0.142546543074278

tan(5.2) return -1.88564187751976

tan(-5.2) return 1.88564187751976

cosh

cosh( number )

hyperbolic cosine

cosh(0.35) return 1.06187781915599

cosh(-3.15) return 11.6894583539049

tanh(

tanh( n )

Hyperbolic  tangent

tanh(3) return 0.99505475368673

tanh(5.2) return 0.999939136886199

Avg

Avg( expression )

求平均

SELECT Avg(sales *  0.10) as "Average Commission" FROM orders;

bitand

bitand( expr1, expr2 )

二进制AND操作

bitand(5,3) return 1

bitand(15,7) return 7

ceil

ceil( number )

获得与当前数据最接近的整数

ceil(32.65) would return 33.

ceil(-32.65) would return -32.

corr

corr( n ,m ) [ over (analytic_clause) ]

N,m都必须为number类型

select corr(quantity, commission) from sales;

select max_entents, corr(max_trans, initial_extent)

from data group by max_extents

cosh

cosh( number )

hyperbolic cosine

cosh(0.35) return 1.06187781915599

cosh(-3.15) return 11.6894583539049

covar_pop

covar_pop( expression1, expression2 )

特定的。参数都为number

select owner, covar_pop(avg_row_len, avg_space) from all_tables group by owner;

covar_samp

covar_samp( expression1, expression2 )

标准的。参数都为number

select owner, covar_samp(avg_row_len, avg_space) from all_tables group by owner

COUNT

COUNT

满足条件的记录行数

SELECT COUNT(expression) FROM tables WHERE predicates;

cume_dist

cume_dist( expression1, ... expression_n ) WITHIN GROUP ( ORDER BY expression1, ... expression_n )

相当于Aggregate 方法

select cume_dist(1000, 500) WITHIN GROUP (ORDER BY salary, bonus) from employees;

 

cume_dist

cume_dist() OVER ( [ query_partition_clause] ORDER BY clause )

相当于Analytic方法

select employee_name, salary, cume_dist() OVER (PARTITION BY department ORDER BY salary)

from employees where department = 'Marketing';

dense_rank

dense_rank( expression1, ... expression_n ) WITHIN GROUP ( ORDER BY expression1, ... expression_n )

相当于Aggregate方法

select cume_dist(1000, 500) WITHIN GROUP (ORDER BY salary, bonus) from employees;

 

dense_rank

dense_rank() OVER ( [ query_partition_clause] ORDER BY clause )

相当于Analytic方法

select employee_name, salary, cume_dist() OVER (PARTITION BY department ORDER BY salary)

from employees where department = 'Marketing';

rank

rank( expression1, ... expression_n ) WITHIN GROUP ( ORDER BY expression1, ... expression_n )

相当于Aggregate方法

select rank(1000, 500) WITHIN GROUP (ORDER BY salary, bonus) from employees;

rank

rank() OVER ( [ query_partition_clause] ORDER BY clause )

相当于Analytic方法

select employee_name, salary, rank() OVER (PARTITION BY department ORDER BY salary)

from employees where department = 'Marketing';

exp

exp( number )

 

exp(3.1) return 22.1979512814416

exp(-3) would return 0.0497870683678639

EXTRACT

EXTRACT ({ YEAR | MONTH | DAY | HOUR | MINUTE | SECOND }| { TIMEZONE_HOUR | TIMEZONE_MINUTE }| { TIMEZONE_REGION | TIMEZONE_ABBR }FROM { date_value | interval_value } )

extract(YEAR FROM DATE '2003-08-22') return 2003

extract(MONTH FROM DATE '2003-08-22') return 8

floor

floor( number )

获得小于或等于的最大的整数值

floor(5.9) return 5  floor(34.29) return 34

floor(-5.9) return -6

greatest

greatest( expr1, expr2, ... expr_n )

返回多个表达式中值最大的,Number返回最大值,string返回首字母最大的,如果相同一次类推

greatest(2, 5, 12, 3) return 12

greatest('2', '5', '12', '3') return '5'

greatest('apples', 'oranges', 'bananas') return 'oranges'

greatest('apples', 'applis', 'applas') return 'applis'

least

least( expr1, expr2, ... expr_n )

greatest对立的,取表达式中最小的。

least(2, 5, 12, 3) return 2

least('2', '5', '12', '3') return '12'

least('apples', 'oranges', 'bananas') return 'apples'

least('apples', 'applis', 'applas', null) return NULL

ln

ln( number )

自然对数

ln(20) return 2.99573227355399

ln(25) return 3.2188758248682

log

log( m, n )

m底数(不等于0,1),n对数

对数

log(10, 20) return 1.30102999566398

log(2, 15) return 3.90689059560852

MAX

SELECT MAX(expression )

FROM tables

WHERE predicates;

获得记录中最大的

 

MIN

SELECT MIN(expression ) FROM tables WHERE predicates;

获得记录中最小的

 

median

median( expression ) [ OVER ( query partition clause ) ]

获得所有记录中前的

select median(salary) from employees where department = 'Marketing';

mod

mod( m, n )

取余

mod(11.6, 2) return 1.6 mod(-15, 4) return -3

power

power( m, n )

m底数,n指数

指数

power(3, 2) return 9 power(6.2, 3) return 238.328

remainder

remainder( m, n )

 

remainder(15, 6) return 3

remainder(15, 4) return -1

remainder(11.6, 2) return -0.4

rremainder(-15, 4) return 1

Round(number)

round( number, [ decimal_places ] )

数值格式化

round(125.315) return 125

round(125.315, 1) return 125.3

Round(date)

round( date, [ format ] )

日期格式化

round(to_date ('22-AUG-03'),'YEAR') return '01-JAN-04'

round(to_date ('22-AUG-03'),'Q') return '01-OCT-03'

sign

sign( number )

number < 0, returns -1.

number = 0, returns 0

number > 0, returns 1

 

sign(-23) return -1

sign(-0.001) return -1

sign(0) return 0

sin

sin( n )

sin

sin(3) return 0.141120008059867

sin(5.2) return -0.883454655720153

sqrt

sqrt( n )

求平方根

sqrt(9) return 3

sqrt(37) return 6.08276253029822

stddev

stddev( [ DISTINCT | ALL ] expression )

相当于Aggregate方法

select stddev(bonus) from employees;

 

stddev

stddev( [ DISTINCT | ALL ] expression ) [ OVER ( analytical_clause ) ]

相当于Analytic方法

select employee_name, bonus, stddev(bonus) OVER (ORDER BY salary) from employees where department = 'Marketing';

SUM

SELECT SUM(expression ) FROM tables WHERE predicates;

求和

SELECT SUM(salary) as "Total Salary" FROM employees WHERE salary > 25000;

var_pop

var_pop( expression )

Expression 必须是number

select var_pop(data_length) from all_tab_columns;

var_samp

var_samp( expression )

Expression 必须是number

select var_samp(char_length) from all_tab_columns;

variance

variance( expression )

Expression 必须是number

select variance(char_length) from all_tab_columns;

 

努力的学习了2天才终于把oracle的函数看完了,就这估计也不是很全,而且有些的理解也不一定正确,其实还有一些自己还没有理解是什么意思,看的有点晕了。算了先知道个大概把,在以后的使用过程中再好好的研究吧。以上的内容都是本人根据自己的理解所写的,所以说如果有不正确的地方还请大家给与出,不胜感激!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值