sql - 如何从结果表中删除计数值“0”?
问题描述
我正在尝试编写一个查询,该查询返回一个包含列name
和numberOfClasses
. 该表包括所有学生的姓名和学生所学的课程数量。我使用以下数据库表:
╔══════════════╦═══════════╦══════════╗
║ TakesClasses ║ ║ ║
╠══════════════╬═══════════╬══════════╣
║ id ║ person_id ║ class_id ║
║ 99 ║ 1 ║ 40 ║
║ 98 ║ 1 ║ 41 ║
║ 97 ║ 1 ║ 42 ║
║ 96 ║ 1 ║ 43 ║
║ 95 ║ 2 ║ 44 ║
║ 94 ║ 2 ║ 45 ║
║ 93 ║ 2 ║ 46 ║
╚══════════════╩═══════════╩══════════╝
╔═════════╦═══════╦══╗
║ Persons ║ ║ ║
╠═════════╬═══════╬══╣
║ id ║ name ║ ║
║ 1 ║ Bart ║ ║
║ 2 ║ David ║ ║
║ 3 ║ Dani ║ ║
║ 4 ║ Erik ║ ║
╚═════════╩═══════╩══╝
我使用了以下查询:
SELECT
name,
COUNT(T.person_id) AS numberOfClasses
FROM
Persons P
LEFT OUTER JOIN
TakesClasses T ON P.id = T.person_id
GROUP BY
P.id, P.name
这是输出:
╔═══════╦═════════════════╗
║ name ║ numberOfClasses ║
╠═══════╬═════════════════╣
║ Bart ║ 4 ║
║ Dani ║ 3 ║
║ David ║ 0 ║
║ Erik ║ 0 ║
╚═══════╩═════════════════╝
如何从结果表中删除带有 0 的条目?
我在这里先向您的帮助表示感谢!
解决方案
只需使用JOIN
而不是LEFT JOIN
select name, count(T.person_id) as amountOfClasses
from Persons P join
TakesClasses T
on P.id = T.person_id
group by P.id, P.name
推荐阅读
- c# - 如何减少实时 LiveCharts 图的延迟?
- keras - Error when checking target: expected dense to have shape (1,) but got array with shape (15662,) maxpooling as a first layer
- r - 无法运行 rpart 程序
- java - FacebookSdk 尝试在空对象引用上调用虚拟方法 'android.view.View android.view.View.findViewById(int)'
- android - firebase 如何自动发送推送通知
- c - 在c错误中动态分配二维数组
- python - 编译后的 python 可执行访问被阻止访问 Oracle 数据库
- python - how to send data through websocket via custom loop "while"
- docker - 处理节点加入 docker swarm
- powerbi - DAX 查询联合多个表和返回不同