MS Access计数查询不会产生所需结果

用户2553585

我有一张表(tblExam),显示的考试数据得分设计如下:

考试名称:字符串
得分:数字(百分比)

基本上,我试图通过考试名称来提取记录,其中分数小于特定数量(本例中为0.695)。

我正在使用以下语句来获取结果:

SELECT DISTINCTROW tblExam.name, Count(tblExam.name) AS CountOfName
FROM tblExam WHERE (((tblExam.Score)<0.695))
GROUP BY tblExam.name;

这可以正常工作,但不会显示0记录超过0.695的检查;换句话说,我得到这个:

Exam Name     count    
firstExam       2  
secondExam      1  
thirdExam       3  

0的计数和所有得分高于0.695的考试都不会出现。我想要的是这样的:

Exam Name     count  
firstExam       2  
secondExam      1  
thirdExam       3  
fourthExam      0  
fifthExam       0  
sixthExam       2  
.  
..  
.etc...  

我希望我在这里有意义。我认为我需要某种LEFT JOIN才能显示所有考试名称,但我无法提出正确的语法。

汉素

似乎您想显示所有名称组,以及每个组中的计数Score < 0.695因此,我认为您应该< 0.695WHERE移到Count()表达式---实际上删除该WHERE子句。

SELECT
    e.name,
    Count(IIf(e.Score < 0.695, 1, Null)) AS CountOfName
FROM tblExam AS e
GROUP BY e.name;

之所以Count()可行,是因为仅计算非null值。如果看起来更清晰Sum()Count()可以使用代替

    Sum(IIf(e.Score < 0.695, 1, 0)) AS CountOfName

注意DISTINCTROWGROUP BY查询中没有用,因为没有分组分组会使行唯一。所以我DISTINCTROW从查询中删除了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章