Table EN Table MATH
NO 英语 NO 数学
A 10 A 30
B 20 B 10
C 30 C 50
综合排名:个人英语排名*0.7+个人数学排名*0.2
SQL语句怎么写啊
实际结果:
NO 综合名次
A 2
B 1
C 3
select name,sum(no)
from (
select name,no*0.7 as no
from en
union all
select name,no*0.2 as no
from match
)group by name
order by sum(no)
/* 测试数据
WITH en(name,no) AS (
SELECT 'A',10 UNION ALL
SELECT 'B',20 UNION ALL
SELECT 'C',30
),
math(name,no) AS (
SELECT 'A',30 UNION ALL
SELECT 'B',10 UNION ALL
SELECT 'C',50
)
*/
SELECT ISNULL(e.name, m.name) name,
ROW_NUMBER() OVER(ORDER BY e.no * 0.7 + m.no * 0.2) no
/* DEBUG
, e.no * 0.7 + m.no * 0.2 v
*/
FROM en e
FULL JOIN math m
ON e.name = m.name
ORDER BY no
name no v
---- -------------------- ----------------------
A 1 13
B 2 16
C 3 31
你好,我是要根据两个Table分别得出的排名,再进行计算的。
如table en中:EN排名 A第一名,B第二名,C第三名
table math中:Math排名 A第二名,B第三名,C第一名
综合排名:A=EN排名*0.7+math排名*0.2=1*0.7+2*0.2=1.1 ,B=EN排名*0.7+math排名*0.2=2*0.7+3*0.2=2.0 , B=EN排名*0.7+math排名*0.2=3*0.7+1*0.2=2.3
因此综合排名:A :1 B:2 C:3