按日期分组的值列的排名 SUM

Ranking SUM of Value Column Grouped by Date

我有一个查询,我想添加一个排名列。我现有的查询有三个表作为联合查询,具有该周总订单值的总和。此查询生成该周总订单价值的总和,按 WeekCommencing 分组,但是我正在努力添加一个基于该周最高到最低总价值的排名列。

我的(更新的)SQLFiddle 示例在这里 http://sqlfiddle.com/#!9/f1d43/35

CREATE 和 INSERT 语句:

CREATE TABLE IF NOT EXISTS ORD (
    WeekCommencing DATE,
    Value DECIMAL(20 , 6 ),
    Orders INT(6)
);
CREATE TABLE IF NOT EXISTS REF (
    WeekCommencing DATE,
    Value DECIMAL(20 , 6 ),
    Orders INT(6)
);
CREATE TABLE IF NOT EXISTS SOH (
    WeekCommencing DATE,
    Value DECIMAL(20 , 6 ),
    Orders INT(6)
);

INSERT INTO ORD (WeekCommencing, Value, Orders) VALUES 
('2017-07-24',1,1),
('2017-07-31',2,1),
('2017-07-17',3,1);

INSERT INTO REF (WeekCommencing, Value, Orders) VALUES 
('2017-07-24',4,1),
('2017-07-17',5,1),
('2017-07-31',6,1);

INSERT INTO SOH (WeekCommencing, Value, Orders) VALUES 
('2017-07-17',7,1),
('2017-07-24',8,1),
('2017-07-31',9,1);

我迄今为止的最大努力:

SELECT 
    WeekCommencing,
    SUM(Value) AS 'TotalValue',
    SUM(Orders) AS 'Orders',
    @r:=@r+1 As 'Rank'
 FROM
    (SELECT 
        WeekCommencing, Value, Orders
    FROM
        ORD
    GROUP BY WeekCommencing UNION ALL SELECT 
        WeekCommencing, Value, Orders
    FROM
        REF
    GROUP BY WeekCommencing UNION ALL SELECT 
        WeekCommencing, Value, Orders
    FROM
        SOH
    GROUP BY WeekCommencing) t1,  
    (SELECT @r:=0) Rank
GROUP BY WeekCommencing DESC;

我的尝试目前是按周开始的顺序排列的,而不是从最高到最低的排名。

我想要的结果是

WeekCommencing TotalValue   Orders  Rank
2017-07-31        17           3      1
2017-07-24        13           3      3
2017-07-17        15           3      2

感谢是提前

SELECT a.*
     , @i:=@i+1 rank
  FROM 
     ( SELECT weekcommencing
            , SUM(value) totalvalue
            , COUNT(*) totalorders
         FROM 
            ( SELECT weekcommencing, value, orders FROM ord
              UNION ALL
              SELECT weekcommencing, value, orders FROM ref
              UNION ALL
              SELECT weekcommencing, value, orders FROM soh
            ) x
        GROUP
           BY weekcommencing
     ) a
     , (SELECT @i:=0) vars
 ORDER
    BY totalvalue DESC;