首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(MYSQL)从有一定资格的学生名单中计算平均值

(MYSQL)从有一定资格的学生名单中计算平均值
EN

Stack Overflow用户
提问于 2014-01-10 10:55:53
回答 2查看 115关注 0票数 0

我想得到每个学生的平均学历。

例如,有30名学生:

代码语言:javascript
复制
Pupil 1: Qualification 1: 5,6 Qualification 2: 3,2 Qualification 3: 9,1
Pupil 2: Qualification 1: 5,1 Qualification 2: 8,6 Qualification 3: 3,1
Pupil 3: Qualification 1: 1,9 Qualification 2: 7,2 Qualification 3: 5,1
Pupil 4: Qualification 1: 4,6 Qualification 2: 5,2 Qualification 3: 9,5

等等。

我想要:

我试过:

代码语言:javascript
复制
select distinct pupils.name, pupils.surname, qualifications.id_trimester, round(avg(qualifications.qualification),2), count(qualifications.qualification) from pupils, qualifications where pupils.level='1' and pupils.class='A'  and qualifications.id_trimester=1 and qualifications.type_qualification='class' group by pupils.surname.

但它显示了所有行的平均限定和计数。它显示了在所有行中重复的第一个瞳孔的平均资格。

这些表格是:

代码语言:javascript
复制
pupils:

id_pupil
name
surname
email
user
pass
level
class

qualifications:

id_qualification
qualification
date
time
subject
id_pupil
id_user
id_trimester
type_qualification (misses, delayes or attitude)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-10 10:57:38

您需要指定如何将qualifications表连接到pupils表。

代码语言:javascript
复制
select ... from pupils join qualifications using (id_pupil) where ...
票数 5
EN

Stack Overflow用户

发布于 2014-01-10 11:06:14

我看到了三个问题。

  • 你应该有GROUP BY id_pupil而不是surname,以防两个学生的姓氏相同。
  • 您没有在两个表之间指定任何联接条件。这意味着每个学生都会得到每一个资格证书--你真的不想那样做。
  • 您不需要DISTINCT --实际上,在同一个SQL语句中使用DISTINCTGROUP BY通常是个坏主意。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21042523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档