[英]Is there a way to return the max value of column in SQL?
如果我有一张桌子...
name | day | showers
-----|-----|--------
John | mon | 1
John | tue | 2
John | wed | 1
Pete | fri | 3
我想返回每个人一天淋浴最多的桌子......
name | day | showers
-----|-----|--------
John | tue | 2
Pete | fri | 3
我该怎么做?
我以为我可以做...
SELECT name, day FROM table GROUP BY name WHERE showers=max(showers)
但由于 day 不在 group by 子句中,我收到语法错误
select distinct on (name) t.*
from t
order by name, showers desc;
这将只返回每个名称的一行。 如果你想要重复,如果有关系,那么使用rank()
或dense_rank()
:
select t.*
from (select t.*,
rank() over (partition by name order by showers desc) as seqnum
from t
) t
where seqnum = 1;
您可以使用uncorrelated subquery
。 这也将保持联系
select *
from t
where (name, showers) in (select name, max(showers)
from t
group by name);
也可以表示为correlated subquery
select *
from t t1
where showers= (select max(t2.showers)
from t t2
where t1.name=t2.name);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.