oracle中的数值函数整理(二)

2014-11-24 17:07:28 · 作者: · 浏览: 2
66 3 22 北 京 44 24 157 5 31.4

3、stddev(标准差函数) variance(标准方差函数) 两者格式与上面的max sum等一致。

4、聚合函数中的 distinct

所有的聚合函数都有一个distinct与all选项。

distinct 表示该列有相同的值的时候只取一列。举个例子说明下:

select count(distinct name),count(name),count(*),count(all name ) from table_a

执行结果: 3 15 15 15

三、列表函数

聚合函数与列表函数的区别:聚合函数是作用在多行的同一列上,组合函数是作用在一行的多个列上,很明显了吧!不明显的话下面有对应的例子,看完保证明显。

1、greatest(取多个数值的最大值) least(取多个数值的最小值)

例子: 取出 1 ,3,2,1,5,4 几个数中的最大值和最小值

select greatest(1,3,2,1,5,4),least(1,3,2,1,5,4) from dual 返回值 5 1

可以对数值进行比较,对字符串进行比较

看完上面的例子再让我们求各个城市每天的最高气温 、最低气温是多少就很简单了,不写了

注意:这两个函数对null的态度跟单值函数一样,当成未知,结果都会返回null

2、coalesce 参数是一串值,返回是第一个出现的不为空的值,如果全都为空 那么返回null

select coalesce(null,'','',null,'1',null) from dual 返回 1

注意:各个参数的类型必须一致。

四、运算优先级

1、符号优先级:圆括号优先级最高、其次是乘除法、再其次是加减法、当优先级相同的时候是从左向右执行。

2、and 和 or的优先级比较: and 优先级 高于 or

举个例子:查询早上气温大于中午并且早上气温大于晚上 或者 中午气温大于晚上的数据

我有两种写法:

select * from table_a where num_morning>num_nooning and num_morning>num_night or num_nooning>num_night;

select * from table_a where num_nooning>num_night or num_morning>num_nooning and num_morning>num_night

经测试两个sql返回结果都一样:

1 哈尔滨 2013-12-17 36.022.0
2 哈尔滨 2013-12-18 23.071.011.0
3 北 京 2013-12-14 33.033.030.0
4 北 京 2013-12-16 31.031.012.0
5 北 京 2013-12-17 44.025.031.0
6 北 京 2013-12-18 24.025.023.0
7 绥 化 2013-12-15 24.024.021.0
8 绥 化 2013-12-16 25.025.024.0
9 绥 化 2013-12-18 21.019.012.0

例子结果充分说明了and的优先级要大于or 优先级要是怕弄错的话就加括号强制先后执行就不怕了。