0
我有包含以下数据MySQL表如下:如何确保特定列组只计算一次BY
MariaDB [testdb]> select * from courses;
+---------+---------+
| student | class |
+---------+---------+
| A | Math |
| B | English |
| C | Math |
| D | Biology |
| E | Math |
| F | Math |
| A | Math |
+---------+---------+
7 rows in set (0.00 sec)
现在我有,我希望看到的计数的简单情况的人参加特定班级。所以我用这个查询,让我有如下结果:
MariaDB [testdb]> select class, count(class) from courses group by class;
+---------+--------------+
| class | count(class) |
+---------+--------------+
| Biology | 1 |
| English | 1 |
| Math | 5 |
+---------+--------------+
3 rows in set (0.01 sec)
但这里的前提条件是,它与学生=“A”计数的行类=“数学”的两倍。
当我们进行点数计算时,我必须确保每个学生只被计入一次。
我如何修改上述查询来实现这一目标?
在此先感谢您的任何答案。
见COUNT(DISTINCT ...),但你真的需要这里PRIMARY KEY。并且要小心你正在计算的内容以及你正在分组的内容。 – Strawberry
阅读['COUNT()'](https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_count)函数。它接受'DISTINCT'修饰符。 – axiac
我明白你的意思了,但我不禁想到或许问题出在数据本身。为什么学生A要被列出两次?这不是一个错误?如果不是,为什么不计算两次?有些东西不适合这里。 – Neil