首页 > 解决方案 > 在这种情况下如何使用 group by 和 case 表达式?

问题描述

我有电影和电影类型。我正在展示电影类型,右边是该电影类型中存在的电影数量。这可以在电影类型上使用 group by 并计算电影 ID。

但是我不明白如何使用带有 case 语句的组来例如显示电影类型“喜剧”和“动作”的每个电影类型的计数,而不是显示每部电影的计数其他类型显示“Remain”,然后显示不属于喜剧或动作的剩余电影的数量,例如:

Action  10
Comedy  7
Remaining  15

你知道实现这一目标需要什么吗?因为即使电影类型与“喜剧”或“动作”不同,也必须始终按电影类型分组,所以必须按电影类型分组,但在这种情况下,有必要显示这些电影的数量不是类型为“动作”和“喜剧”。

标签: sqldatabase

解决方案


表达式使用派生表。然后它的结果:case GROUP BY

select genre, count(*)
from
(
    select case when genre in ('Action', 'Comedy') then genre
                else 'Remaining'
           end as genre
    from tablename
) dt
group by genre

ANSI SQL 兼容!


推荐阅读