可以对此SQL查询使用一点帮助。
假设我有一张名为StudentGrades的桌子,其中包含一个学生名单和一个标志,表明他们是否通过了课程。假设有很大一部分学生尚未获得成绩,我如何计算已经通过/失败或未获得成绩的学生的当前百分比。
ID LastName GradeGiven
-------------------------------
1 Bueller PASS
2 Smith FAIL
3 Carter FAIL
4 Howell NULL
5 Clinton PASS
6 Brown FAIL
.
.
.
48 Jones NULL
49 Frank NULL
50 Jenkins NULL
我希望能够创建一个查询,显示已通过,失败并且尚未分配成绩的学生人数。为此,我创建了这个查询......
SELECT
COUNT(GradeGiven) AS "Count of each Grade",
GradeGiven,
COUNT(GradeGiven * 100.0/(SELECT COUNT(*) from StudentGrades) AS "Percentage"
FROM
StudentGrades
GROUP BY
GradeGiven
我的问题是NULL
显示为0
,即使它存在。即使它没有价值,它不应该有计数吗?如果大部分成绩尚未填写,我原本预计会有45分和很大比例。但它是0.000
Count GradeGiven Percentage
------------------------------------------
0 NULL 0.000
2 PASS 4.000
3 FAIL 6.000
答案 0 :(得分:2)
使用count(*)
或count(1)
:
SELECT COUNT(*) AS "Count of each Grade",
GradeGiven,
COUNT(*) * 100.0/(SELECT COUNT(*) from StudentGrades) AS "Percentage"
FROM StudentGrades
GROUP BY GradeGiven;
对count(<column name>)
的困惑是我不认为应该使用它的原因,至少是SQL中的初学者。您可以在此问题中详细了解我的观点here。