在SQL中查询 -

时间:2017-07-22 21:09:36

标签: sql-server

我有一张名为&#34的表格;结果"如下所示:

enter image description here

我想计算完全得分的人员。这意味着得分列中没有零的人。例如,基于上传的图片,只计算ID为1004的人,结果应为1。 我用了这段代码:

select Count(PrsID) from results 
where Score <> 0
group by PrsID

但如果一个人只有一个非零分数,它就不会帮助我,他将被计算在内!

提前致谢。

5 个答案:

答案 0 :(得分:0)

我想你想要这样的东西:

select PrsID, Count(1) from results 
where Score = 0
group by PrsID

答案 1 :(得分:0)

这个返回非零分数的人数

SELECT 
    t1.PrsID,
    Count(t1.PrsID)
FROM
(   SELECT 
      * 
    FROM results 
    GROUP BY results.PrsID
    ORDER BY results.Score ASC
) AS t1
WHERE t1.Score <> 0;

答案 2 :(得分:0)

您可以使用以下条件聚合:

Select PrsId from results
    group by PrsId
    having sum(case when score = 0 then 1 else 0 end) > 1

答案 3 :(得分:0)

如果我理解正确,我认为这就是你想要的:SELECT COUNT(DISTINCT(PrsID)) FROM results WHERE PrsID NOT IN (SELECT DISTINCT PrsID FROM results WHERE score = 0)

答案 4 :(得分:0)

如果一个人的最低分数大于零,则应计算它们。

select count(1)
from (
        select PrsID 
        from results 
        group by PrsID
        having min(Score) > 0) as results