首页 > 解决方案 > 难以获取前 3 名学生的详细信息 谁上课迟到

问题描述

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

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

所以我只需要前 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 名学生记录。谢谢

学生桌

考勤表

标签: mysqllaravel

解决方案


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

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

推荐阅读