我有 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);
我做错了什么?谢谢
答案 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;