Mysql 如何在1查询中使用COUNT()和SUM()

Mysql 如何在1查询中使用COUNT()和SUM(),mysql,sql,Mysql,Sql,我试图得到学生分数和学生人数的总和 表架构是 Stud_ID|Stud_Name|Marks|Class 1 | A |20 |1 1 | A |10 |1 1 | A |22 |1 5 | G |21 |1 5 | G |16 |1 5 | G |27 |1 2 | B |13 |1 2 | B

我试图得到学生分数和学生人数的总和

表架构是

Stud_ID|Stud_Name|Marks|Class
1      | A       |20   |1   
1      | A       |10   |1
1      | A       |22   |1
5      | G       |21   |1
5      | G       |16   |1
5      | G       |27   |1
2      | B       |13   |1
2      | B       |14   |1
2      | B       |21   |1
2      | B       |13   |1
2      | B       |21   |1
3      | C       |10   |1
3      | C       |17   |1
3      | C       |16   |1
我需要每个学生的总分数,以及表中有多少学生。我正在尝试将两者结合起来,但没有成功

SELECT count(
sum(`mark`) FROM `es_marks_entry_summery` where `class` ='16' group by `Stud_ID`)
这就是你想要的

SELECT 
    id, 
    name, 
    SUM(marks) as total_marks, 
    (select count(distinct id) FROM t WHERE class = 16) as num_students
FROM t
GROUP BY id
请参见此处的小提琴示例:

然后,您可以按类进行筛选,或者根据需要使用
WHERE
子句对其进行自定义

如果您还希望它是每个班级唯一的学生人数及其分数,那么只需将
分组依据更改为此

GROUP BY id, class

参见小提琴中的例子:

@T谢谢。但查询显示了117个学生,因为表中只有38个学生记录,但每个学生可能有5到6个记录。我需要的学生总数是38和每个学生的总分数。查询的第一部分是返回标记的正确总和,但第二部分显示117我需要38,因为在类1中有38个studnets您是否使用count distinct中的write列?您是否已经更改了中的查询?您只需要一个筛选出其他类的位置。。。在“t2”之后添加class=your_specific_class_number,您需要使用两个查询来获得每个表的总和,并计算所有学生的总数。不,您不需要。。只需一次选择即可完成。。看看我的答案。
SELECT 
    id, 
    name, 
    SUM(marks) as total_marks, 
    (select count(distinct id) FROM t WHERE class = 16) as num_students
FROM t
GROUP BY id
GROUP BY id, class
  select *  from (select class ,Stud_ID, sum(Marks) as Marks from tbl  group by Stud_ID) tbl1, (select count(distinct Stud_ID) as Times from tbl) tbl2
    where Class=16;