需要帮助构建案例陈述

时间:2017-11-17 18:33:15

标签: sql oracle

在撰写案例陈述时我需要帮助。我在我的一个表中有一个列有一些值,我想用这些值生成一个字符串。下面是我在表格中的列以及我希望看到的输出。

Risk Score

1.70
2.10
2.60
3.00
3.20
3.60
3.80
4.00
4.10
4.30
4.60
4.90
5.20
5.40
5.50
5.60
5.80
6.10
6.40
6.60
6.80
7.10
7.50

所以我的要求是我想要一个案例陈述,如果风险分数> 0且< = 3则必须达到Low桶,如果风险分数> 3且< = 6它必须到达Medium桶,如果风险评分> 6,则必须到High

此致

维卡斯

2 个答案:

答案 0 :(得分:2)

您可以利用CASE表达式中子句的短路评估:

...
    case when risk_score > 6 then 'high'
         when risk_score > 3 then 'medium'
         when risk_score > 0 then 'low'
         else                     'some_description_here'
    end
        as bucket

ELSE部分用于 > 0以外的风险评分。 (风险评分为0,如果可能,则为负数,或者 - 更有可能 - NULL,如果您的表中有可能的话。)如果您不需要ELSE分支,则不需要。

答案 1 :(得分:0)

您只需要一个简单的CASE

SELECT val
    ,CASE 
        WHEN val > 0
            AND val <= 3
            THEN 'LOW'
        WHEN val <= 6
            THEN 'medium'
        WHEN val > 6
            THEN 'High'
        END AS bucket
FROM table1;

<强>结果:

+-----+--------+
| VAL | BUCKET |
+-----+--------+
| 1.7 | LOW    |
| 2.1 | LOW    |
| 2.6 | LOW    |
| 3   | LOW    |
| 3.2 | medium |
| 3.6 | medium |
| 3.8 | medium |
| 4   | medium |
| 4.1 | medium |
| 4.3 | medium |
| 4.6 | medium |
| 4.9 | medium |
| 5.2 | medium |
| 5.4 | medium |
| 5.5 | medium |
| 5.6 | medium |
| 5.8 | medium |
| 6.1 | High   |
| 6.4 | High   |
| 6.6 | High   |
| 6.8 | High   |
| 7.1 | High   |
| 7.5 | High   |
+-----+--------+

<强> DEMO