sql - 选择最大计数

标签 sql sql-server count max

我希望返回成绩最高的个人的姓名。我在想类似 max(count(*)) 但我无法完全破解它。

这是数据集

+ -------- Student -------- +  + -------- Grades --------- + 
+ Student_ID INT            +  + Student_ID INT            +
+ Student_Name VARCHAR(10)  +  + Assignment_ID INT         +
+                           +  + Grade INT                 +
+ ------------------------- +  + ------------------------- +
  INSERTS                        INSERTS
  (Student_ID, Student_Name)     (Student_ID, Assignment_ID, Grade)
  (1,'Alex')                     (1,10,90) (2,10,85)         
  (2, 'Brett1')                  (3,10,75) (4,10,74)
  (3,'Cora')                     (1,11,80) (2,11,81)
  (4,'David')                    (4,11,88) (6,11,86)
  (5,'Eleanor')                  (2,12,84)
  (6,'Brett2')

以及我对解决方案的尝试:

SELECT s.Student_Name FROM Student s
WHERE(
  SELECT * FROM Grades g
  WHERE g.Student_ID=s.Student_ID
    and g.Assignment_ID=MAX(COUNT(g.Assignment_ID))
  )

最佳答案

此查询可能有帮助:

select top 1 s.Student_ID,s.Student_Name,COUNT(g.Assignment_ID) as TotalAssignments
from Student s
inner join Grades g on s.Student_ID = g.Student_ID
group by s.Student_ID,s.Student_Name
order by COUNT(g.Assignment_ID) desc

关于sql - 选择最大计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48670759/

相关文章:

java - 当sql语句没有返回行时,resultset.next()总是返回true

SQL Server 代理作业历史记录 - 仅删除一天

sql - 计算两点之间的距离(纬度,经度)

逗号分隔列表的Mysql WHERE问题

java - 使用 jOOQ 选择 rownum/max(rownum)

MYSQL查询返回多个用户输入参数的行数

c++ - 寻找 map 技术

sql - 在 SQL 中创建动态日期范围

sql - 如何在 SQL 中将 GPS 格式的时间转换为本地时间格式?

sql - 如何计算PostgreSQL中以前事件的数量和时间差?