mysql - 难以获取前 3 名学生的详细信息 谁迟到了

标签 mysql laravel

实际上,我需要那 3 名比其他人上课迟到的学生的详细信息。

例如有 20 名学生,但每个学生都迟到了,例如:

  • a 迟到了 3 次
  • b 迟到了 5 次
  • c 在第 10 名学生之前迟到了 7 次。

所以我只需要迟到的前 3 名学生的详细信息。

我正在使用显示此错误的查询:

    GROUP BY `Date`
)

[Err] 1111 - Invalid use of group function

查询:

SELECT
    *
FROM
    student
WHERE
    ID IN
    (
        SELECT
            MAX( COUNT( SID ) )
        FROM
            attendance
        WHERE
            `Status`='Late'
        GROUP BY
            `Date`
    )

据我所知,我使用最大值和计数的方式是错误的,请告诉我如何使用它,或者是否有人为我编写正确的查询,这有助于我获得正确的前 3 名学生记录。谢谢

Student Table

Attendance Table

最佳答案

如果您不关心学生迟到的日期,那么:

SELECT
    student.*,
    lateAttendanceOccurrencesBySid.*
FROM
    (
        SELECT
            `sid`,
            COUNT(*) AS occurrences
        FROM
            attendance
        WHERE
            `status` = 'Late'
        GROUP BY
            `sid`
    ) AS lateAttendanceOccurrencesBySid

    INNER JOIN student ON student.id = lateAttendanceOccurrencesBySid.sid

ORDER BY
    lateAttendanceOccurrencesBySid.occurrences DESC

LIMIT
    3

关于mysql - 难以获取前 3 名学生的详细信息 谁迟到了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57837304/

相关文章:

php - 我的 AJAX 代码不更新数据库

mysql - MySQL 中的 MAX 函数未返回正确的键值

php - Laravel 4 - 2 个具有相同输入名称的表单

php - 使用 PhpStorm 创建和配置 Laravel 项目

php - 路由 laravel 冲突

mysql - #1064 - 在声明附近创建触发器时出现 MySQL 错误

mysql - 使用 ODBC 链接到 MySql 时,MS Access 表单不会刷新

c# - mysql 数据读取从类返回 0 行

php - 传递 API 数据以查看 Laravel

php - Laravel redirect()->intended() 在自定义登录 Controller 中不起作用