1
我有一个查询,我想添加一个排名列。我现有的查询有三个表作为联合查询,其中有一周的总订单价值。此查询会生成按WeekCommencing分组的总订单价值总和,但我很难根据该周的最高到最低总值添加排名列。按日期排列的值列的排名SUM
我(更新)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:[email protected]+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
谢谢你是进步
大。这显示正确的排名。是否可以通过WeekCommencing获得排名和订单? – Walkertron
只是把它包裹在另一个超级查询 – Strawberry
完美。现在已经排序了。 – Walkertron