Sql Server Max()over partition by - 翻译成MySql

时间:2015-03-06 03:16:35

标签: mysql sql sql-server

所以我见过SQL Server RowNumber()over(partition by id)转换为MySql 另一个问题posted here

但是这对MAX()等其他聚合函数没有帮助。

我需要一组行的Max()。

Cust_Type   Cust_Name   Revenue  Max
Top         A           10000    10000
Top         B           9000     10000 
Top         C           8000     10000 
Bottom      X           5000     7000
Bottom      Y           6000     7000
Bottom      Z           7000     7000

现在我知道我可以进行查询以获取Max和Cust_Type,然后将其连接到整个表以添加最大值,但是有没有办法不执行额外的查询,而是在相同的情况下执行时尚作为我引用的帖子?

1 个答案:

答案 0 :(得分:3)

如果我理解正确,你可以使用用户定义的变量。

select cust_type, 
       cust_name,
       revenue,
       @max:=IF(@custtype!=cust_type,revenue,@max),
       @custtype:=cust_type
from yourtable, (select @max:=0, @custtype:='') t
order by cust_type, revenue desc