【问题标题】:What customers who bought the biggest amount of a product in one order?哪些客户在一个订单中购买了最多的产品?
【发布时间】:2023-03-28 23:29:01
【问题描述】:

我有 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);

我做错了什么?谢谢

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。另外,“产品的”是什么意思?样本数据和期望的结果会有所帮助。

标签: sql aggregation


【解决方案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;

【讨论】:

    猜你喜欢
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    相关资源
    最近更新 更多