简体   繁体   English

选择2个相同行之间的最大值MYSQL

[英]Select maximum value between 2 same rows MYSQL

I have this table here我这里有这张桌子

CONCAT(Nome,'',Cognome) Interno value
FRANCESCA BIFULCO       1           0
FRANCESCA BIFULCO       1          84
FRANCESCA BIFULCO       1A        570
FRANCESCA BIFULCO       1A        972
RICCIARDELLI            2        1276
RICCIARDELLI            2        1320

All I want to do is to select the maximum value per User.我想要做的就是选择每个用户的最大值。 ( As you saw, each user appears multiple times.) (如您所见,每个用户都出现了多次。)

For Example:例如:

FRANCESCA BIFULCO | 1 | 0
FRANCESCA BIFULCO | 1 | 84

Result wanted:想要的结果:

FRANCESCA BIFULCO | 1 | 84

What I have tried:我尝试过的:

select a.ut, max(value)
from (
select Utenti_Condomini.ID_Condominio,CONCAT(Nome,' ', Cognome) as ut, Utenti_Condomini.Interno as i, Greatest(Max(Val_Primo), Max(Val_Secondo), Max(Val_Terzo), Max(Val_Quarto) )as value 
from Letture_Acqua, Utenti_Condomini 
where ID = 19 
and Utente = CONCAT(Nome,' ', Cognome)
and ID = ID_Condominio and Interno = Internus 
group by Utente, Internus, Anno 
order by id_user+0
)a 
group by a.ut, a.i

NOTE: The inner query returns what it is shown in the photo.注意:内部查询返回照片中显示的内容。

Thank you very much for your help!非常感谢您的帮助!

用您请求的任何表替换 yourTableName

SELECT CONCAT(Nome,' ',Cognome),interno,MAX(value) FROM yourTableName GROUP BY Nome,Cognome,interno;

Schema架构

create table test(
fullname varchar(100),
category char(5),
value int
);
insert into test values("TATA BIRLA", "1",0);
insert into test values("TATA BIRLA", "1",80);
insert into test values("TATA BIRLA", "1A",570);
insert into test values("TATA BIRLA", "1A",972);

SQL Query SQL查询

SELECT fullname, max(value)
from test
group by fullname,category;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM