用mysql写一个能够统计学生成绩为null和不为null或者0的人数,且将两种人数进行汇总
时间: 2024-03-27 12:39:53 浏览: 9
可以使用如下的SQL语句来实现该功能:
```sql
SELECT
SUM(CASE WHEN score IS NULL OR score = 0 THEN 1 ELSE 0 END) AS null_or_zero_count,
SUM(CASE WHEN score IS NOT NULL AND score != 0 THEN 1 ELSE 0 END) AS not_null_count,
COUNT(*) AS total_count
FROM
student_scores;
```
这个SQL语句会从 `student_scores` 表中进行查询,使用 `CASE WHEN` 语句来判断每个学生成绩的情况,如果成绩为 `NULL` 或者为 `0`,则计入 `null_or_zero_count`,否则计入 `not_null_count`。最后使用 `COUNT(*)` 统计总人数,并将三个数值一起返回。
相关问题
用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` 的人数相减,最后将差值作为结果返回。
用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`。