查询以使用 HAVING 子句

问题描述

我想编写一个查询,返回完成项目最多的学生的姓名以及项目的数量。我希望查询返回这样的表:

学生姓名 max_project_count
约翰·多伊 2
安娜多 2

这是我到目前为止的代码,但它只给了我 2 个列名 student_name 和 count,而不是结果。

SELECT s.student_name,COUNT(student_name)
FROM student s
GROUP BY student_name 
HAVING COUNT(student_name) = (
   SELECT MAX(count)
   FROM (SELECT s.student_name,COUNT(*) AS count 
         FROM  student_project k,student s
         WHERE s.student_id = k.student_id
         GROUP BY student_name) AS foo)

我现在的结果:

学生姓名 max_project_count

这些是我的数据库中的表:

学生

student_id 学生姓名
jd123 约翰·多伊
ad456 安娜多
js678 杰斯·史密斯
dk789 丹尼尔·金

school_project

project_id project_name
math_1023 数学竞赛
sci_9872 科学竞赛

student_project

student_id project_id
jd123 math_1023
ad456 math_1023
jd123 sci_9872
ad456 sci_9872
js678 sci_9872
dk789 sci_9872

解决方法

XYZ> test (suite: XYZ-test)

MyModule.fun1  #1: [OK]
MyModule.fun1  #2: [OK]
...
... : [OK]
... : [OK]
... : [OK]


         Properties  Test Cases   Total
 Passed  1           71           72
 Failed  0           0            0
 Total   1           71           72

XYZ> Test suite XYZ-test passed
Completed 2 action(s).