用mysql写一个能够统计学生成绩为null和不为null或者0的人数综合
时间: 2024-03-27 07:39:37 浏览: 12
可以使用如下的SQL语句来实现:
```
SELECT
COUNT(CASE WHEN score IS NULL OR score = 0 THEN student_id END) AS 'score_is_null_or_0_count',
COUNT(CASE WHEN score IS NOT NULL AND score != 0 THEN student_id END) AS 'score_not_null_or_0_count'
FROM
score_table;
```
其中,`score_table` 是存储学生成绩的表,`student_id` 是学生的唯一标识,`score` 是学生的成绩。
这条SQL语句使用了两个 `COUNT` 函数和两个 `CASE` 表达式,分别统计了成绩为 `NULL` 或 `0` 的人数和成绩不为 `NULL` 且不为 `0` 的人数,并给它们取了别名。执行这条SQL语句后,会返回一个包含两个字段的结果集,分别表示成绩为 `NULL` 或 `0` 的人数和成绩不为 `NULL` 且不为 `0` 的人数。
相关问题
用mysql写一个能够统计学生成绩为null和不为null或者0的人数,同时将两种人数相减
可以使用如下的SQL语句来实现该功能:
```sql
SELECT
COUNT(CASE WHEN score IS NULL OR score = 0 THEN 1 ELSE NULL END) - COUNT(CASE WHEN score IS NOT NULL AND score != 0 THEN 1 ELSE NULL END) AS difference
FROM
student_scores;
```
这个SQL语句会从 `student_scores` 表中进行查询,使用 `CASE WHEN` 语句来判断每个学生成绩的情况,并将成绩为 `NULL` 或者为 `0` 的人数与成绩不为 `NULL` 且不为 `0` 的人数相减,最后将差值作为结果返回。注意在 `CASE WHEN` 语句中使用 `NULL` 关键字来跳过不符合条件的记录,而不是使用 `0` 或 `1`。
用mysql写一个能够统计学生成绩为null和不为null或者0的人数,且将两种人数相减
可以使用如下的SQL语句来实现该功能:
```sql
SELECT
SUM(CASE WHEN score IS NULL OR score = 0 THEN 1 ELSE 0 END) - SUM(CASE WHEN score IS NOT NULL AND score != 0 THEN 1 ELSE 0 END) AS difference
FROM
student_scores;
```
这个SQL语句会从 `student_scores` 表中进行查询,使用 `CASE WHEN` 语句来判断每个学生成绩的情况,并将成绩为 `NULL` 或者为 `0` 的人数与成绩不为 `NULL` 且不为 `0` 的人数相减,最后将差值作为结果返回。