Mysql 链接到另一列中某个值的数据列表
Mysql 链接到另一列中某个值的数据列表,mysql,sql,Mysql,Sql,CREATE TABLE operations ( id int auto_increment primary key, orderID VARCHAR(255), itemID VARCHAR(255), event_date DATE, order_volume INT, shipped_volume INT ); INSERT INTO operations (itemID, orderID, event_date, order_volum
CREATE TABLE operations (
id int auto_increment primary key,
orderID VARCHAR(255),
itemID VARCHAR(255),
event_date DATE,
order_volume INT,
shipped_volume INT
);
INSERT INTO operations
(itemID, orderID, event_date, order_volume, shipped_volume
)
VALUES
("Item_01", "Order_01", "2020-01-01", "200", "0"),
("Item_01", "Order_01", "2020-01-18", "0", "50"),
("Item_01", "Order_02", "2020-02-15", "400", "0"),
("Item_01", "Order_02", "2020-02-23", "0", "120"),
("Item_01", "Order_03", "2020-02-21", "300", "0"),
("Item_01", "Order_03", "2020-02-21", "0", "180"),
("Item_02", "Order_01", "2020-02-02", "500", "0"),
("Item_02", "Order_01", "2020-02-10", "0", "175"),
("Item_02", "Order_02", "2020-02-03", "900", "0"),
("Item_02", "Order_02", "2020-03-18", "0", "620"),
("Item_03", "Order_01", "2020-08-12", "700", "0"),
("Item_03", "Order_01", "2020-08-25", "0", "280");
预期结果:
itemID orderID order_volume shipped_volume position
Item_03 Order_01 700 280 1
Item_02 Order_02 900 620 1
Item_02 Order_01 500 175 2
Item_01 Order_03 300 180 1
Item_01 Order_02 400 120 2
Item_01 Order_01 200 50 3
在上表中,我有不同的
项目
,它们对应的订单
和事件日期
,订购了订单卷
,装运了发货卷
现在,我想得到一个所有订单的降序列表链接到一个特定项目例如,
Item\u 01
链接到Order\u 01
,Order\u 02
,Order\u 03
因此,带有
Item_01
的orderIDs
应该从Order_01
到Order_03
列出此外,特定
项目
中每个订单ID
的位置应在位置
列中显示为数字
到目前为止,我试图执行以下查询,但它没有给出预期结果:
SELECT
itemID,
orderID,
sum(order_volume),
sum(shipped_volume),
ROW_NUMBER() OVER (PARTITION BY orderID ORDER BY event_date DESC) as position
FROM operations
GROUP BY 1,2;
要获得上面显示的结果,我需要做哪些更改?试试这个
SELECT
itemID,
orderID,
sum(order_volume),
sum(shipped_volume),
ROW_NUMBER() OVER (PARTITION BY orderID ORDER BY itemID DESC) as position
FROM operations
GROUP BY 1,2
order by itemID desc, orderID desc;
试试这个
SELECT
itemID,
orderID,
sum(order_volume),
sum(shipped_volume),
ROW_NUMBER() OVER (PARTITION BY orderID ORDER BY itemID DESC) as position
FROM operations
GROUP BY 1,2
order by itemID desc, orderID desc;
您也可以尝试以下方法:
SELECT
itemID,
orderID,
sum(order_volume),
sum(shipped_volume) as ShippedVolume,
ROW_NUMBER() OVER (PARTITION BY orderID ORDER BY ShippedVolume DESC) as position
FROM operations
GROUP BY 1,2
ORDER BY itemID Desc, ShippedVolume Desc;
您也可以尝试以下方法:
SELECT
itemID,
orderID,
sum(order_volume),
sum(shipped_volume) as ShippedVolume,
ROW_NUMBER() OVER (PARTITION BY orderID ORDER BY ShippedVolume DESC) as position
FROM operations
GROUP BY 1,2
ORDER BY itemID Desc, ShippedVolume Desc;