对分类值进行语句处理时的大小写

Case when statement to categorized values

提问人:NEWBIE 提问时间:9/21/2023 最后编辑:NEWBIE 更新时间:9/21/2023 访问量:36

问:

TABLE_1:

Col_1 Col_2 Col_3
一个 苹果 100
一个 苹果 100
一个 苹果 56
一个 苹果 44
B 香蕉 100
C 黄瓜 93
C 黄瓜 7

我想使用一个案例 when 语句将 Col 1 归类为“好”或“坏”到一个新列中。我提出了以下查询:

SELECT DISTINCT
   Col_1
   , CASE WHEN Col_3 = 100 THEN 'good'
      ELSE 'bad'
   END AS STATUS
FROM TABLE_1

这会导致以下TABLE_2:

Col_1 地位
一个
一个
B
C

我该如何解决这个问题,以便如果 A 既好又坏,它只会处于坏状态?我希望TABLE_3成为我的结果

TABLE_3:

Col_1 地位
一个
B
C
SQL Oracle 案例

评论

0赞 jarlh 9/21/2023
您可以执行 GROUP BY。
1赞 jarlh 9/21/2023
顺便说一句。这是一种表达方式。case
0赞 NEWBIE 9/21/2023
@jarlh 感谢您的推荐。我最终使用了 AVG() 然后按分组,它起作用了!

答:

0赞 Littlefoot 9/21/2023 #1

也许是这样的事情?

示例数据:

SQL> with table_1 (col1, col2, col3) as
  2    (select 'A', 'Apple',  100 from dual union all
  3     select 'A', 'Apple',  100 from dual union all
  4     select 'A', 'Apple',   56 from dual union all
  5     select 'A', 'Apple',   44 from dual union all
  6     select 'B', 'Banana' ,100 from dual union all
  7     select 'C', 'Cucumber',93 from dual union all
  8     select 'C', 'Cucumber', 7 from dual
  9    )

查询:

 10  select col1,
 11    case when max(col3) = 100 and min(col3) < 100 then 'bad'
 12         when max(col3) = 100                     then 'good'
 13         else 'bad'
 14    end status
 15  from table_1
 16  group by col1;

COL1  STATUS
----- ----------
A     bad
B     good
C     bad

SQL>

甚至更简单

 10  select col1,
 11    min(case when col3 = 100 then 'good'
 12             else 'bad'
 13        end
 14       ) status
 15  from table_1
 16  group by col1;

COL1  STATUS
----- ----------
A     bad
B     good
C     bad

SQL>
0赞 ekochergin 9/21/2023 #2

你可以通过使用 min() 来实现这一点

SELECT DISTINCT Col_1
      ,CASE WHEN min(Col_3) = 100 THEN 'good' ELSE 'bad' END AS STATUS
  FROM TABLE_1
 group by col_1
 order by col_1;

它将采用最小值 col_3,当存在<为 100 的记录时,它将返回“bad”

0赞 nbk 9/21/2023 #3

您可以 GROUP BY 并使用聚合函数

SELECT 
   Col_1
   , MIN(CASE WHEN Col_3 = 100 THEN 'good'
      ELSE 'bad'
   END) AS STATUS
FROM TABLE_1
GROUP BY Col_1
COL_1 地位
一个
B
C

小提琴