[英]SQL: join 2 tables based on column value and select row values where grouped column value is max
我收到了这个查询,我想从那些一天中价格最高的客户那里获取所有名称。 如果存在多个具有相同最高价格的客户,则也应选择他们。 我设法获得了按日期分组的最高价格的客户,但我认为如果他们在同一天具有相同的最高价值,这不会给我两个客户。 名称应该是不同的。 output需要如下:
| Name (asc) |
------------------
| customer name |
| customer name |
| ...... |
订单表如下所示:
|Client|Price|Orderdate |
------------------------
|1 |100.0|2010.01.10|
|... |... | ..... |
and the Client table:
|Client_NR|Name |
-----------------------
|1 |customer#001|
|2 |customer#002|
select distinct k1.NAME from Orders a LEFT JOIN Order b on a.Orderdate = b.Orderdate
JOIN Client k1 on k1.Client_NR = a.Client
where a.Price IN
(SELECT MAX(a.Price) from Order a group by Orderdate)
order by NAME asc
我认为我的错误在于加入客户端行,但我就是想不通。 我试图在第一次加入时使用 a.price = b.price 但测试会失败。 非常感谢任何建议。
WITH cte AS ( SELECT Client.Name,
RANK() OVER (PARTITION BY Orders.Orderdate
ORDER BY Orders.Price DESC) rnk
FROM Client
JOIN Orders ON Client.Client_NR = Orders.Client )
SELECT Name
FROM cte
WHERE rnk = 1
ORDER BY Name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.