寻找通过三种条件对订单进行排序的方法。我可以解决其中两个问题。示例表:
Buyer Qty Item_ID
James 1 12345
Jack 1 34564
John 3 13445
Kevin 1 83243
Bill 2 23434
Jack 3 23423
所以这里的诀窍是首先对买家进行分组 那么数量 然后是item_id
杰克有两个订单需要分组然后拉出并一起发货 其余订单需要按数量分组,然后按item_ID
排序输出如下:
Buyer Qty Item_ID
Jack 1 34564
Jack 3 23423
James 1 12345
Kevin 1 83243
Bill 2 23434
Bob 2 23444
John 3 13445
买家不需要按多个订单分组 按数量排序,item_id分开Jacks订单。我们每天获得100个订单,多个来自同一个买家。需要按item_id对具有相同数量项目的订单进行排序,以简化从房间一端到另一端的库存拉动。似乎将买家分组可行,但尚未弄明白。
到目前为止最合理的查询:
select * FROM orders
WHERE printed = 0
AND status = 'completed'
AND address_name <> ''
group by buyer
ORDER BY qty, id;
此查询会跳过同一买家的多个订单,并将其余订单正确排序。
我已经成功实施了答案1谢谢!
答案 0 :(得分:1)
以下查询将为您提供所需的确切结果。在内部查询中,它生成相同买方实例的计数。然后它从买家列加入原始表。然后按相同的买方实例递减计数和其他列升序对其进行排序。
SELECT table1.buyer, qty, item_id
FROM orders table1,
(SELECT buyer, COUNT(*) as count FROM orders GROUP BY buyer) as table2
WHERE table1.buyer = table2.buyer
ORDER BY count DESC, qty, item_id;
请参阅此fiddle。