PostgreSQL的case when语句使用

case when语句第一种方式:

case 
    when 表达式1 then 结果1
    when 表达式2 then 结果2
    else 结果n
end
举例1:
select sum(
        case
            when rental_rate=0.99 then 1
            else 0
        end
    ) as "aa",
    
    sum(
     case
        when rental_rate=2.99 then 1
        else 0
     end
    ) as "bb",
    
    sum(
        case
            when rental_rate=4.99 then 1
            else 0
        end
    ) as "cc"
    
    from film;
结果:
aa     bb     cc
341    323    336


【注】:as后接的别名需要带双引号,否则报语法错误


case when语句第二种方式:

case 表达式
    when 匹配1 then 结果1
    when 匹配2 then 结果2
    else 结果n
end
举例2:
    select sum(
        case rental_rate
            when 0.99 then 1
            else 0
        end
    ) as "aa",
    
    sum(
        case rental_rate
            when 2.99 then 1
            else 0
        end
    ) as "bb",
    
    sum(
        case rental_rate
            when 4.99 then 1
            else 0
        end
    ) as "cc"
    from film;
结果:
aa     bb     cc
341    323    336

上面是在网上搜到的介绍

下面是自己实际用到的情况,供自己学习记录。

SELECT  c.unit,
		case when d.money ::DECIMAL = 0.00
		then '0%'
		   else concat(round(c.number ::DECIMAL/d.money ::DECIMAL*100,2),'%')  end as rate  
FROM (
SELECT p.unit,sum(p.number::DECIMAL) as number FROM table p 
WHERE  p.code IN (SELECT  code FROM code_table ) 
GROUP BY  p.unit
) c
left join (
SELECT  unit,sum(money::DECIMAL) as money FROM code_table 
GROUP BY unit
) d
on  c.unit = d.unit 

使用时case when then 的数据类型要相同,否则会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值