首页 > 解决方案 > 如何从结果表中删除计数值“0”?

问题描述

我正在尝试编写一个查询,该查询返回一个包含列namenumberOfClasses. 该表包括所有学生的姓名和学生所学的课程数量。我使用以下数据库表:

╔══════════════╦═══════════╦══════════╗
║ 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 的条目?

我在这里先向您的帮助表示感谢!

标签: sql

解决方案


只需使用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

推荐阅读