mysql - 如何使用具有默认值的分组依据?

标签 mysql

假设我有下表:

+-----------+------------+-------+
| quiz_type | student_id | score |
+-----------+------------+-------+
| class     | NULL       | 10    |
+-----------+------------+-------+
| class     | NULL       | 9     |
+-----------+------------+-------+
| student   | A          | 5     |
+-----------+------------+-------+
| student   | B          | 7     |
+-----------+------------+-------+
| student   | A          | 6     |
+-----------+------------+-------+

我想获得每个学生的分数总和,但需要包括每个学生的类(class)分数。换句话说,我想要一个如下的结果表:

+------------+-------+
| student_id | score |
+------------+-------+
| A          | 30    |
+------------+-------+
| B          | 26    |
+------------+-------+

实际上,quiz_type 列并不存在。我需要执行 GROUP BY Student_id,但在每个组中包含 NULL 值。我已经为此苦苦挣扎了很长一段时间。有什么好的解决办法吗?

最佳答案

你可以试试这个:

select 
    student_id,
    sum(score) + (select sum(score) from yourtable where student_id is null) as score
from yourtable
where student_id is not null
group by `student_id`

SQLFiddle Demo

关于mysql - 如何使用具有默认值的分组依据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38448190/

相关文章:

mysql - 关闭与 ORMLite 和 MySql 的连接

mysql - 在 MySQL 表中插入缺失值

mysql - MySql 与 ElasticSearch 中的聚合

php - 使用 concat 和 MySql 创建一个 json 数组

mysql - 从此表中选择一行并从其他表中选择所有相关行

将@localhost更改为IP地址时MySQl登录问题

mysql - 显示字段但对字段类型进行过滤?

mysql - 如何将 .wpress 文件转换为 .sql 文件并查看其内容?

php - 尝试使用 Android 和 PHP 插入 MYSQL 时出错

mysql - 如何防止应用程序在使用文件时锁定文件?