学生成绩查询:SQL-根据年级类型计算加权学生成绩

关于学生成绩查询的问题,在grade weighted calculator中经常遇到, 我无法根据特定的年级类型计算学生成绩。

我无法根据特定的年级类型计算学生成绩。

我有的表

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)  

欢迎任何帮助。

0

我在本地(重新)创建 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

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(376)
Apex一直无法连接到ea服务器:几个小时后 我一直失去与MySQL服务器的连接
上一篇
Pl as:用于将OraclePL/SQL转换为Postgresql PL/pgSQL的工具
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(21条)