【发布时间】:2018-12-22 11:13:53
【问题描述】:
我需要编写一个 SQL 查询,它根据来自不同表中的列的两个派生值的划分来带来排名记录。因此,表 1 有一个 A 列,表 2 有一个 B 列,两个表都有共同的school_id。表 A 中的数据如下所示:
school_id | student_id | subject_id | marks
123 ABC 7Y8U 94
234 UHT 4Y8U 87
123 ABC 8P0F 49
567 FCV 5Q1U 70
表B中的数据如下:
school_id | prize_amt
123 3000
234 4700
123 8210
567 3200
我需要做的计算是:
required_value = total marks per school per student / number of times that school is awarded
我需要在DESC 顺序中基于required_value 排列的n 记录。我现在可以写两个查询:
- 仅针对给定学生按 DESC 顺序选择具有相应最高总分的不同学校
- 选择学校按 DESC 顺序授予的次数
如何获得在上面定义的required_value 上排名的多条记录?期望的结果是:
school_id | required_value
234 87
123 71.50
567 70
因此,ID 为 123 的学校的分数为 94 + 49 = 143,并且获得了 2 次奖励,因此其 required_value 的值为 143/2 = 71.50。
【问题讨论】:
-
school_ids 891 和 901 是从哪里来的?它们不在样本数据中
-
@Mureinik 只是示例演示。让我更正一下。
-
@ShubhamA。你如何获得 required_value。你能把它放在你的查询中吗?什么是“每所学校每名学生的总分”?我真的不明白如何从 school_id 234 获得 29.67
-
两张表中的数据之间存在1-1相关是巧合吗?
-
您提供的示例数据似乎与预期结果不符。请至少向我们展示您如何计算 school_id 234 和 school_id 123 的 required_value。