实际上,我需要那 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 名学生记录。谢谢
最佳答案
如果您不关心学生迟到的日期,那么:
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/