-2

寻找一种按三个条件对订单进行排序的方法。我可以毫无问题地得到其中两个。示例表:

Buyer  Qty  Item_ID
James  1    12345
Jack   1    34564
John   3    13445
Kevin  1    83243
Bill   2    23434
Jack   3    23423

所以这里的诀窍是先对买家进行分组,
然后是数量,然后是 item_id

Jack 有两个订单需要分组,然后拉到一起发货 其余订单需要按数量分组,然后按 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,谢谢!

4

1 回答 1

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;

参考这个小提琴

于 2013-02-22T16:29:50.463 回答