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

Posted

技术标签:

【中文标题】哪些客户在一个订单中购买了最多的产品?【英文标题】:What customers who bought the biggest amount of a product in one order? 【发布时间】:2021-08-23 18:44:48 【问题描述】:

我有 2 张桌子:

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

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

不考虑没有客户的订单。请按 FIRSTNAME 和 LASTNAME 排序

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】:

如果你想要一个最大的客户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;

【讨论】:

以上是关于哪些客户在一个订单中购买了最多的产品?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 在 WHERE 中使用 MAX()

查找客户一起购买但不重复的产品列

SQL查询以获取购买其他客户购买的产品的客户

购买汽车最多的甲骨文展示客户

选择购买次数最多的客户,按日期分组

是否有查询选择哪些客户购买了特定产品以及这些客户购买了哪些其他产品?