簡體   English   中英

SQL:根據列值和 select 行值連接 2 個表,其中分組列值為最大值

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM