我有下面的 MySQL 表,其中包含以下数据:
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)
现在我有一个简单的案例场景,我想查看参加特定类(class)的人数。所以我使用了这个查询,给出了以下结果:
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)
但这里的问题是,它对 class = 'Math' 的 Student = 'A' 行进行了两次计数。
当我们进行计数时,我必须确保每个学生只被计算一次。
如何修改上述查询来实现此目的?
预先感谢您的回答。
最佳答案
尝试这个查询
SELECT temp.class,count(temp.class) FROM(
select student,class from courses group by student
) AS temp
GROUP BY `class`;
关于mysql - 如何确保特定列在 Group BY 中只计算一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46034562/