我有 3 个输入表:
**Student Table**
-------------
id name
-------------
201 shiva
202 Jitendra
203 Makarand
204 Arpit
**Position Table**
-------------
id rank
-------------
203 1
201 2
202 3
204 4
**House Table**
------------------
housename id
------------------
Yellow 201
Blue 202
Red 203
Yellow 204
学生表中有n条记录
我想用公式 P = sum(n+1 - rank)*100 计算点数(列)
** Output Table **
-------------------------------
HouseName Name Points
-------------------------------
yellow Shiva 300
Red Makarand 200
Yellow Arpit 100
我写了这个查询:
select h.housename "House Name",
s.name "Name",
(sum ( (count(*) from s + 1) - p.rank ) ) * 100 as "Points"
from House h,Student s,Position p
where h.housename = (select s.name where s.id = h.id)
order by Points
示例 SQL Fiddle 在这里:http://sqlfiddle.com/#!9/4d823/26
我是 SQL 新手,我怎样才能使这个查询正确?
最佳答案
你的问题不清楚,如果你想从三个表中获取积分(使用公式),
select h.housename "House Name",
s.name "Name",
((count(s.id) + 1 - p.rank ) * 100) as "Points"
from House h join Student s on s.id = h.id join Position p on p.id=s.id order by Points
我没有运行此查询。能否确认一下?
关于mysql - 计算具有三个表的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40695334/