哪些客户在一次订单中购买了最多的产品?

时间:2021-06-06 11:54:07

标签: sql aggregation

我有 2 张桌子:

  • CUSTOMERS(ID、名字、姓氏、地址);
  • ORDERS(ID、PRODUCT_NAME、PRODUCT_PRICE、DATE_ORDER DATE、ID_CUSTOMER、AMOUNT);

获取在一个订单中购买最多产品的客户的名字和姓氏。

不考虑没有客户的订单。请按名字和姓氏排序

SELECT firstname, lastname 
FROM customers
LEFT JOIN orders ON customers.id = orders.id_customer
GROUP BY customers.firstname
HAVING (SELECT MAX(orders.amount) FROM orders);

我做错了什么?谢谢

1 个答案:

答案 0 :(得分:0)

如果您希望一位客户的值最大为 amount,那么最简单的方法是 order by,然后只获取一行:

select c.firstname, c.lastname 
from customers c join
     orders o
     on c.id = o.id_customer
order by o.amount desc
fetch first 1 row only;

如果您想要每个产品的最大数量,那么窗口函数是正确的方法

select pc.*
from (select o.product, c.firstname, c.lastname, o.amount,
           rank() over (partition by o.product order by o.amount desc) as seqnum
      from customers c join
           orders o
           on c.id = o.id_customer
     ) pc
where seqnum = 1;
相关问题