--跟java一样,默认取整
select 1/4;
--小数怎么取,这里可以隐私转换
select round(1/4::numeric,2);
--获取
select round(cast(1 as numeric)/cast(4 as numeric),2);
--4.to_char
select to_char(CURRENT_DATE,'yyyy-mm-dd');
select to_char(CURRENT_TIMESTAMP,'yyyy-mm-dd hh24:mi:ss');
--9 0跟oracle一样 这个D相当于.
select to_char(125::real, '0999D9');
--聚合函数支持扩展 distinct 和order by 不在sql标准内
select string_agg(ename, ',') from emp;
select string_agg(ename,',' order by ename) from emp;
--转为一个数组
select array_agg(ename) from emp;
select array_agg(ename order by ename) from emp;
--json
SELECT to_json(array_agg(ename) ) FROM emp;
SELECT json_agg(ename) FROM emp;
SELECT row_to_json(emp) FROM emp;
SELECT array_to_json(array_agg(ename)) FROM emp;
--avg min max count sum
select e.deptno,count(1) from emp e group by e.deptno;
select e.deptno,count(1) from emp e group by e.deptno order by e.deptno;
select e.deptno, count(1)
from emp e
group by rollup (e.deptno);
--绝对值 abs等价@
select abs(-1),@'-9.1';
--阶乘
select 4!;
--窗口函数
select e.deptno,
e.ename,
row_number() over (),
rank() over (order by deptno),
dense_rank() over (order by deptno),
lead(e.ename) over (order by deptno),
lag(e.ename) over (order by deptno),
first_value(e.ename) over (order by deptno)
from emp e;
--生成 默认步长为1
--简写
select generate_series(2,4);
--完整
select * from generate_series(2,4);
--可以设置别名
select s from generate_series(1,10,2) s;
SELECT current_date+num AS dates
FROM generate_series(0, 14, 7) num;
--每个10小时
select * from generate_series('2019-08-14 00:00'::timestamp,'2019-08-14 12:00','1 hours');
--系统字典
--current_schema返回在搜索路径中的第一个模式名
select current_catalog 数据库名,current_user 当前用户,user 当前用户,
current_schema 当前模式,session_user 当前会话用户,version() 版本;
--权限查询
SELECT has_table_privilege('emp', 'select');
postgresql学习-常用函数
最新推荐文章于 2025-08-05 15:10:16 发布
