gpt4 book ai didi

sql - 使用GROUP BY选择多个(非聚合函数)列

转载 作者:行者123 更新时间:2023-12-03 20:20:54 34 4
gpt4 key购买 nike

我试图从一个列中选择最大值,同时按具有多个重复值的另一个非唯一id列进行分组。原始数据库如下所示:

mukey    | comppct_r | name | type
65789 | 20 | a | 7n
65789 | 15 | b | 8m
65789 | 1 | c | 1o
65790 | 10 | a | 7n
65790 | 26 | b | 8m
65790 | 5 | c | 1o
...


使用以下方法可以正常工作:

SELECT c.mukey, Max(c.comppct_r) AS ComponentPercent
FROM c
GROUP BY c.mukey;


返回的表如下:

mukey    | ComponentPercent
65789 | 20
65790 | 26
65791 | 50
65792 | 90


我希望能够在不影响GROUP BY函数的情况下添加其他列,以将诸如name和type之类的列包括到输出表中,例如:

mukey    | comppct_r | name | type
65789 | 20 | a | 7n
65790 | 26 | b | 8m
65791 | 50 | c | 7n
65792 | 90 | d | 7n


但它总是输出一个错误,提示我需要对select语句使用聚合函数。我应该怎么做呢?

最佳答案

您遇到了一个问题。这是可能的解决方案之一:

select c.mukey, c.comppct_r, c.name, c.type
from c yt
inner join(
select c.mukey, max(c.comppct_r) comppct_r
from c
group by c.mukey
) ss on c.mukey = ss.mukey and c.comppct_r= ss.comppct_r


另一种可能的方法,相同的输出:

select c1.*
from c c1
left outer join c c2
on (c1.mukey = c2.mukey and c1.comppct_r < c2.comppct_r)
where c2.mukey is null;


关于此主题,有一个全面的解释性答案: SQL Select only rows with Max Value on a Column

关于sql - 使用GROUP BY选择多个(非聚合函数)列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17411177/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com