[英]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.