我有两张桌子:
grades_table =有100行学生,分数为。
Student Mark
Joe 64
Mark 50
percentage_table =一个具有等级百分比的表,即
Grade Mark
A 70+
B 60+
C 50+
在SQL中是否可以使用成绩计算填充名为Overall的新表?例如,
Student Grade
Joe B
Mark C
我看过IN和BETWEEN。但我不太清楚如何计算范围。我是SQL的新手,任何帮助或指向正确的方向都会很棒。
答案 0 :(得分:2)
将百分比表的标记列拆分为两列,markmin
和markmax
。然后JOIN
表格为:
select g.student, p.grade
from grades g
join percentage p ON g.mark between p.markmin and p.markmax
或者,根据后来建议如果我稍微更改了方案,并且在percentage_table中只有一个标记列,那么只有60 +,70 + :
我假设(A, 70)
表示70以上是成绩A
。使用GROUP BY
MIN
按字母顺序找到“最低”等级:
select g.student, min(p.grade)
from grades g
join percentage p ON g.mark <= p.mark
group by g.student
或者,使用相关的子选择:
select g.student, (select min(p.grade) from percentage p
where g.mark <= p.mark)
from grades g
答案 1 :(得分:0)
我建议您在表<Parameter>
中添加两个不同的列:
percentage_table
然后你可以使用JOIN:
Grade | MarkMin | MarkMax
A | 70 | Null
B | 60 | 69
C | 50 | 59
然后可以插入70+(即&gt; = 70)(70,Null)。
如果你想要一个&lt; = 49那么你可以添加一个标记为(Null,49)。