postgres常用查询

一.字符串截取

left: 从左往右截取字符
right: 从右往左截取字符

如截取4个字符:

SELECT left( column_name, 4 ) from table
SELECT right( column_name, 4 ) from table

二.条件统计

COUNT(CASE WHEN column_name= ‘value’ THEN 1 END) AS count_name

如截统计值1,值2的数量:

SELECT
COUNT(CASE WHEN column_name= ‘value1’ THEN 1 END) AS count_name1,
COUNT(CASE WHEN column_name= ‘value2’ THEN 1 END) AS count_name2,
COUNT(*) AS total
from table

三.时间转字符

to_char( column_name, ‘YYYY年MM月’ )
如:

select to_char( column_name, ‘YYYY年MM月’ ) from table

四.时间格式化

:Date
时间强制转换,把时间戳转换为日期
如:

select create_time:Date as create_date from table

date_trunc(‘year’, now())
获取本年1月1日0时0分时间
date_trunc(‘month’, now())
获取本月1日0时0分时间
date_trunc(‘day’, now())
获取今天0时0分时间
如查询今年创建的数据:

SELECT * FROM table WHERE create_time >date_trunc(‘year’, now())

五,条件返回值

if(column_name==value, value_when_true, value_when_false)
当某列值等于value时返回value_when_true, 否则返回value_when_false
如查询column_name为1就返回1, 其他值都返回0

SELECT if(column_name==1, 1, 0) as column_name from table

如条件求和,当值大于value才累加

SELECT sum(if(column_name>value, column_name, 0) )as column_name from
table

六.返回第一个非空值

COALESCE ( column_name, value1,value2 )
如某列为空则赋值为0,否则为它本身

SELECT COALESCE (column_name, 0 ) from table

七.查询所有最新记录

ROW_NUMBER() over(PARTITION BY column_name ORDER BY create_time DESC )
每条数据的编号:row_number()
分组排序:over(partition by column_name order by order_column_name )
分组后的数据获取第一条

查询所有最新记录示例:

SELECT * FROM (SELECT ROW_NUMBER() over(PARTITION BY column_name ORDER BY create_time DESC ) AS serialOrder, * FROM t_goods) temp WHERE temp.serialOrder= 1;

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值