sql - 查找具有特殊条件的数据库中的字段数
问题描述
我的问题是:如果我有带有 student_id 和其他字段(无关紧要)的表格学生和带有三个字段的表格考试:student_id、subject_id(来自另一个表格主题的 ID)和考试标记。
我需要找出每个科目考试成绩相同的学生人数。
我一直坚持这项任务,你可以让我知道我该如何做或解释完整的解决方案。
简单数据:
对于这种情况,查询必须返回 count(student_id) = 4
解决方案
您需要嵌套聚合:
select count(*)
from
(
select student_id
from tab
group by student_id
-- same min and max means only one value exists
having min(exam_mark) = max(exam_mark)
) as dt
最小值/最大值通常比 更有效COUNT(DISTINCT exam_mark) = 1
。
如果您只希望学生拥有多个分数,请增强 HAVING 与
AND count(*) > 1
推荐阅读
- r - 使用多个回归器预测 Garch 时间序列
- php - MySQL PDO 语句在每个 var 之后返回 \n
- ios - 从函数中传递常量 - Swift
- joomla - Joomla“致命错误:无法在第 0 行重新声明 jblogerror()”
- css - 使用 CSS 删除 Wordpress 标签列表中的分隔符逗号
- java - 在运行时引用继承类的对象类引用变量会发生什么?
- python - Django:为什么我的 Django 模型会出现“on_deleate”错误
- java - 我的天气应用程序得到响应但不显示它
- javascript - 无法从文件夹中获取随机类型的随机文件
- r - R中的嵌套/递归字符串插值?字符串::str_interp