首页 > 解决方案 > Oracle SQL 过滤正常值中的高值

问题描述

我有如下示例数据,我想过滤/识别出正常值。不确定如何在 SQL 构造中排除异常值。尝试取平均值(Sal),但不确定如何从平均值中排除那些高值?

    date   dept_id  Sal
    201907   10     250
    201907   10     290
    201907   10     320
    201907   10     100000
    201907   10     500000
    201908   20     800
    201908   20     860
    201908   20     700
    201908   20     850000
    201908   20     1000000
    201909   10     260
    201909   10     230
    201909   10     310

预期输出如下

    date   dept_id  Sal     out_of_normal_values
    201907   10     250         N
    201907   10     290         N
    201907   10     320         N
    201907   10     100000      Y   
    201907   10     500000      Y
    201908   20     800         N 
    201908   20     860         N
    201908   20     700         N
    201908   20     850000      Y
    201908   20     1000000     Y
    201909   10     260         N
    201909   10     230         N
    201909   10     310         N

标签: sqloracle

解决方案


您可以创建 CASE 语句如下

case
    when
        sal > 1000
    then
        'Y'
    else
        'N'
end as out_of_normal_values

推荐阅读