Sql “如何删除计数值”;0“;从结果表中?
我正在尝试编写一个查询,返回一个包含列Sql “如何删除计数值”;0“;从结果表中?,sql,Sql,我正在尝试编写一个查询,返回一个包含列name和numberOfClasses的表。此表包括所有学生的姓名以及学生所参加的课程数量。我使用以下数据库表: ╔══════════════╦═══════════╦══════════╗ ║ TakesClasses ║ ║ ║ ╠══════════════╬═══════════╬══════════╣ ║ id ║ person_id ║ class_id ║ ║ 99
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
如果您想对聚合数据进行过滤,如
groupby
产生的数据,可以使用HAVING
子句
SELECT name,COUNT(T.person_id) as amountOfClasses
FROM Persons P LEFT OUTER JOIN TakesClasses T
on P.id = T.person_id
GROUP BY P.id, P.name
HAVING COUNT(T.person_id) > 0;
SQLFIDLE:执行内部联接而不是左联接。