求两个Table里面数据排名再进行排名运算 sql语句

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