Mysql SQL:基于列值联接2个表,并选择分组列值为最大值的行值

Mysql SQL:基于列值联接2个表,并选择分组列值为最大值的行值,mysql,intellij-idea,Mysql,Intellij Idea,我收到了这个查询,我想从那些一天中价格最高的客户那里得到所有的名字。 如果存在多个具有相同最高价格的客户,则也应选择这些客户。 我设法得到了按日期分组的最高价格的客户,但我认为如果他们在同一天拥有相同的最高价值,这不会给我两个客户。 名称应该是不同的。 输出需要如下所示: | Name (asc) | ------------------ | customer name | | customer name | | ...... | |Client|Price|Order

我收到了这个查询,我想从那些一天中价格最高的客户那里得到所有的名字。 如果存在多个具有相同最高价格的客户,则也应选择这些客户。 我设法得到了按日期分组的最高价格的客户,但我认为如果他们在同一天拥有相同的最高价值,这不会给我两个客户。 名称应该是不同的。 输出需要如下所示:

|   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|

订单表如下所示:

|   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|

我假设我的错误在联接客户机行中,但我就是想不出来。 我试着在第一次连接中使用a.price=b.price,但是测试失败了。
非常感谢您的建议。

请注意,
order
在MySQL中是一个保留字,因此作为表/列是一个糟糕的选择identifier@Strawberry应该是Orders而不是order我认为Orders不是一个保留字。不过,它现在是“order”,请注意,
order
在MySQL中是一个保留字,将其呈现为表/列是一个糟糕的选择identifier@Strawberry应该是命令而不是命令我认为命令不是一个保留词,目前最好只从MySQL 8.0中提及该作品。@Milda OP没有指定版本-这意味着他拥有最后一个版本。最好只从MySQL 8.0中提及该作品。@Milda OP没有指定版本-这意味着他拥有最后一个版本。
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