我无法根据特定的年级类型计算学生成绩。
我有的表
Subject
-------------------
Subid [PK]
subjectTitle
Topic
----------------
Tid (TopicID) [PK]
SubId (Subjectid) [FK]
Designation
WeightOfSubject
Marking
-------------------
pid (PersonID) [PK][FK]
Tid (TopicID) [PK][FK]
Points
Person
------------------------
pid (PersonId) [PK]
firstname
lastname
Sex
与以下数据配对。
Subject Data
Subid
AA001 Arts
AA002 Crafts
Topic Data
Tid Subid Designation WeightOfSubject
001 AA001 S1 30
002 AA001 S2 30
003 AA001 S3 40
004 AA002 S1 50
005 AA002 S2 50
Marking DATA
Pid Tid Points(out of 100)
P01 001 33
P01 002 62
P01 003 81
P01 004 85
P01 005 63
P02 001 74
P02 002 72
P02 003 45
P02 004 63
P02 005 88
Person DATA
pid firstname lastname
P01 Josh Draxler M
P02 John Doe M
我想做的是将标记乘以它们的重量,然后将所有加权分数加在一起,以获得他们所做的每个主题的平均总体加权(最终结果显示主题 ID,人和他们的整体加权平均标记为百分比。)
虽然我的 MYSQL 充其量是平庸的,我给了它一个去,并与以下(我知道它错了一英里,别担心。)
SELECT Topic.Designation, Subject.Subid, Subject.subjectTitle, Person.firstname, Person.lastname, G(Topic.WeightOfSubject/100*Marking.Points)
FROM Topic, Subject, Person, Marking
WHERE Person.pid = 'P01'
AND Marking.Points = 33
AND Topic.WeightOfSubject = 30
这对一个人来说是很好的,但我不确定如何为一个以上的人和一个以上的主题构建这样的查询,我已经搜索了 JOINS 等,但它真的没有指导我如何为我的特定问题构建一个查询。
Pid Firstname Lastname subjectTitle Result(WeightedAverage)
001 Josh Draxler Arts (Weighted Average Here)
欢迎任何帮助。
我在本地(重新)创建 MySQL 8.0 中的表,如下所示:
create table subject (
subid int,
subjecttitle varchar(10)
);
create table topic (
tid int,
subid int,
designation varchar(10),
weightofsubject int
);
create table marking (
pid int,
tid int,
points int
);
create table person (
pid int,
firstname varchar(20),
lastname varchar(20),
varchar(1)
);
然后,我运行显示的查询。它为他 / 她拥有的每个人和主题生成加权平均值:
select
p.pid as pid,
max(p.firstname) as firstname,
max(p.lastname) as lastname,
max(p.) as ,
s.subid, -- you can remove this column, if you wish
max(s.subjecttitle) as subjecttitle,
1.0 * sum(m.points * t.weightofsubject) /
sum(t.weightofsubject) as weighted_average
from subject s
join topic t on t.subid = s.subid
join marking m on m.tid = t.tid
join person p on p.pid = m.pid
group by p.pid, s.subid
order by p.pid, s.subid
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(81条)