SQL填充表与其他表的计算

时间:2015-09-18 08:58:26

标签: sql

我有两张桌子:

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的新手,任何帮助或指向正确的方向都会很棒。

2 个答案:

答案 0 :(得分:2)

将百分比表的标记列拆分为两列,markminmarkmax。然后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)。