PostgreSQL 如何检查 case 语句中整数的范围

4 postgresql

我在获取查询时遇到问题,其中我有一个检查用户分数范围以显示分数,如果用户分数在 75 到 100 之间,则为 A。如果用户分数在 60-75 之间,则为 B,依此类推。

我得到这个值

CASE users.points_earned
WHEN  75-100 THEN
    'A+'
WHEN  60-75 THEN
    'A'
WHEN  40-60 THEN
    'B+'
WHEN  1--40 THEN
    'B'
ELSE
    'Absent'
    end as rank 
Run Code Online (Sandbox Code Playgroud)

但不工作如何检查 postgresql 的 case 语句中的范围

OTA*_*TAR 5

您可以使用BETWEEN检查范围。

WITH users(points_earned) as(
    select 75
    union all
    select 90
    union all
    select 200
)

SELECT CASE 
WHEN users.points_earned BETWEEN 40 AND 75 THEN 'A+'
WHEN users.points_earned BETWEEN 76 AND 100 THEN 'A'
ELSE 'Absent'
END as rank 
FROM users
Run Code Online (Sandbox Code Playgroud)

  • @FerozSiddiqui 顺便说一句,因为 `case` 语句返回第一个满足的条件,所以可以简化为 `case when users.points_earned < 40 then 'B' when users.points_earned < 60 then 'B+' ... end` (3认同)