我有一张看起来像这样的表格:
customer_id item price cost
1 Shoe 120 36
1 Bag 180 50
1 Shirt 30 9
2 Shoe 150 40
3 Shirt 30 9
4 Shoe 120 36
5 Shorts 65 14
我试图找到每位客户购买的最贵的商品,以及商品的成本和商品名称。
我可以做第一部分:
SELECT customer_id, max(price)
FROM sales
GROUP BY customer_id;
这给了我:
customer_id price
1 180
2 150
3 30
4 120
5 65
我如何让这个输出也显示我的项目和它在输出中的成本?所以输出应该是这样的...
customer_id price item cost
1 180 Bag 50
2 150 Shoe 40
3 30 Shirt 9
4 120 Shoe 36
5 65 Shorts 14
我假设它是 Select 中的 Select 语句?我非常感谢您的帮助,因为我对 SQL 还很陌生。
答案 0 :(得分:1)
通常具有良好性能的一种方法是相关子查询:
select s.*
from sales s
where s.price = (select max(s2.price)
from sales s2
where s2.customer_id = s.customer_id
);