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 优先级要是怕弄错的话就加括号强制先后执行就不怕了。