sql - 在基于其他列的 where 子句中使用 case 表达式选择条件
问题描述
我正在尝试根据列级别返回列等级的计数。如果列 Level 等于“1”,那么我想计算列 ID 的所有行,其中 Grade 是“A”、“B”、“C”或“D”。如果列“Level”等于“2”,那么我想计算列 ID 的所有行,其中 Grade 为“A”、“B”或“C”,
示例表:
示例输出:
解决方案
SELECT ID,SUM(CASE WHEN Level=1 AND Grade IN ('A','B','C','D') THEN 1
WHEN Level=2 AND Grade IN ('A','B','C') THEN 1
ELSE 0
END AS GradeCount
FROM YourTable
GROUP BY ID;
推荐阅读
- python - 如何将列添加到漂亮表作为第一列
- swift - 使用@EnvironmentObject 我得到:“不能分配给属性:'viewModel' 是一个只能获取的属性”
- c++ - C++|将用户输入存储到模板变量
- mysql - MySQL: ERROR 1822 (HY000) 无法添加外键约束。缺少约束索引
- c - 如何使用任务和依赖项将 C 代码程序转换为 OpenMP
- batch-file - 批处理脚本在 ssh 后停止并且没有继续
- python - 如何将以下 Python 字符串拆分为字符串列表?
- clojure - 如何在环中发送输入流作为响应?
- r - 尝试根据 if_else 条件更改变量值时 mutate() 出现 dplyr 错误
- lua - 加分在 Roblox 中不断增加