mysql - 难以获取前 3 名学生的详细信息 谁上课迟到
问题描述
实际上,我比其他人更需要那些迟到的学生的详细信息。
例如有 20 个学生,但每个学生都迟到了:
- a 迟到了 3 次
- b 迟到 5 倍
- c 迟到 7 次,直到第 10 个学生。
所以我只需要前 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
推荐阅读
- python - 如何避免模型在 keras Tensorflow 中变成层
- ios - CoreData派生属性查看一对多关系是否包含属性
- pandas - 在 Pandas 中操作列时出现内存错误
- java - Spring ApplicationEvent onApplicationEvent 方法
- python - 按文件扩展名 pandas 对值进行分组
- amazon-web-services - CLI - 由于配置错误,执行失败:Lambda 函数的权限无效
- python - 在 Django 模型的模板中显示键/值对
- ckan - CKAN 预览不起作用,但下载的 CSV 可以
- swift - swift中的自动登录功能
- javascript - 简单的 console.log 在 ASP 文件中不起作用