sql - 在这种情况下如何使用 group by 和 case 表达式?
问题描述
我有电影和电影类型。我正在展示电影类型,右边是该电影类型中存在的电影数量。这可以在电影类型上使用 group by 并计算电影 ID。
但是我不明白如何使用带有 case 语句的组来例如显示电影类型“喜剧”和“动作”的每个电影类型的计数,而不是显示每部电影的计数其他类型显示“Remain”,然后显示不属于喜剧或动作的剩余电影的数量,例如:
Action 10
Comedy 7
Remaining 15
你知道实现这一目标需要什么吗?因为即使电影类型与“喜剧”或“动作”不同,也必须始终按电影类型分组,所以必须按电影类型分组,但在这种情况下,有必要显示这些电影的数量不是类型为“动作”和“喜剧”。
解决方案
为表达式使用派生表。然后它的结果: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 兼容!
推荐阅读
- git - Git尝试将代码与目标分支中已有的代码合并
- java - Android Studio,将应用程序运行到移动设备后,它替换了最后一个应用程序,依此类推(那些应用程序不同)
- ruby - Ruby“gem”命令失败,Permission denied @ rb_sysopen
- ios - 如何正确覆盖 UITableViewController 子类的 init()?
- python - 为什么并发期货比我的循环慢?
- css - Webpack 4:文件加载器不加载 .css 或 .scss 文件中的资产
- c# - 如何在本地运行基于 C# 的 AWS Lambda 函数进行开发?
- java - 如何订阅需要另一个热订阅的 observable - RxJava
- amazon-web-services - 如何在aws服务中进行源代码控制配置,例如`s3`,`cloudfront`配置?
- hyperledger-fabric - Hyperledger Composer - 如果参与者在 acl 中具有 UPDATE 权限,如何防止参与者更改其资源的某些属性?