最大最小函数
- 列最大最小 - 最大:max(column)、最小:min(column)
select max(grade), min(grade) from grademem_record
执行结果:
max | min |
---|---|
500 | -5 |
- 值最大最小 - 最小:least(val1, val2, ...)、最大:greatest(val1, val2, ...)
select least(10, 45, -88), greatest(10, 45, -88)
执行结果:
least | greatest |
---|---|
-88 | 45 |
返回改表达式列表的第一个非空的值
coalesce (val1, val2, val3, …) value列表必须是相同类型。
select coalesce(null, 0, 3)
执行结果:
coalesce |
---|
0 |
条件表达式
case when - 类似于if/else
用法1:
case f
when va1
then 1
when val2
then 2
else 3
end
select
real_name as name ,
(
case sex
when 0
then '男'
when 1
then '女'
else '保密'
end
) as sex
from member_info
用法2:
case when where1
then 1
when where2
then 2
else 3
end
select
real_name as name ,
(
case when sex = 0
then '男'
when sex = 1
then '女'
else '保密'
end
) as sex
from member_info
也可以在函数中使用:
select least(
0,
(
case ${year} -- 可以动态生成
when 2021
then 1
when 2022
then 2
else 3
end
)
)
select
sum(case when sex = 0 then 1 else 0 end) as sum1,
sum(case when sex = 0 then 0 else 1 end) as sum2
from member_info
coalesce
coalesce(value[,...]): 入参个数不限,返回参数中第一个非NULL值。
select coalesce(null,null,1,2,3) -> 1
select coalesce(null,null,'one','two') -> 'one'
nullif
nullif(arg1,arg2): 如果两个参数值相等则返回NULL,否则返回arg1.
select nullif(1,1); -> NULL
select nullif(1,2); -> 1
数据生成函数
generate_series
generate_series(start, stop, [step]): 生成填充数据
用法示例:
select generate_series(1, 10)
select generate_series(1, 10, 2)
select generate_series(10, 1, -5)
select generate_series(now(), now() + '7 days', '1 day')
select generate_series(to_date('20130403','yyyymmdd'), to_date('20130404','yyyymmdd'), '3 hours');
generate_subscripts
generate_subscripts(a1 array, [a2 array], dim int, [reverse boolean]) 生成数组下标值, dim为数组的维度,reverse: true反, false正
用法示例:
select generate_subscripts(array['a','b','c','d'], 1)
select generate_subscripts(array['a','b','c','d'], 1, true)
select generate_subscripts(array[array['a','b'], array['c','d'], array['e','f']], 1)
select generate_subscripts( array[array['a','b'], array['c','d'], array['e','f']], 2)