Oracle CASE 和 BOOLEAN 数值表达式

Oracle CASE and BOOLEAN Numeric Expressions

不确定为什么这不起作用...似乎 a >= b 是一个布尔表达式。 RDMS 抱怨“>=3”说 "missing keyword"。我遵循语法 here

这个有效:

WHEN count(movie_num) 3 THEN 'Most Popular'

这不是:

WHEN count(movie_num) >=3 THEN 'Most Popular'

可能遗漏了一些明显的东西,如果是这样,我深表歉意。

完整查询

select movie_genre as "Movie Genre", 
count(movie_num) as "Number of Movies",
CASE count(movie_num)
    WHEN count(movie_num) >=3 THEN 'Most Popular'
    WHEN count(movie_num) >= 2 THEN 'Popular'
    ELSE 'Normal' END AS "Popularity Rating"
from movie 
group by movie_genre
order by count(movie_num) desc;

试试这个,

CASE (movie_num) WHEN count(movie_num) 更改为 CASE WHEN count(movie_num)

select movie_genre as "Movie Genre", 
count(movie_num) as "Number of Movies",
     CASE WHEN count(movie_num) >=3 THEN 'Most Popular'
          WHEN count(movie_num) >= 2 THEN 'Popular'
     ELSE 'Normal' END AS "Popularity Rating"
from movie 
group by movie_genre
order by count(movie_num) desc;

根据您的情况,您可以重写它以使用 simple-case expression:

select movie_genre as "Movie Genre", 
       count(movie_num) as "Number of Movies",
       CASE count(movie_num)
         WHEN 0 THEN 'Normal'
         WHEN 1 THEN 'Normal'
         WHEN 2 THEN 'Popular'
         ELSE 'Most Popular'
       END AS "Popularity Rating"
from movie 
group by movie_genre
order by count(movie_num) desc;