繁体   English   中英

SQL group-by 最大

[英]SQL group-by largest

我有一个表,它按对象进行共现计数,如下所示:

col1    col2    count   
item1   item2    3
item3   item2    1
item1   item4    1
item2   item3    2 

我想在 col1 上按最大的前 n 个计数进行分组,但是如果我在上表中这样做,因为所有对象对都不可用,结果将如下:(这是不正确的)

col1    col2    count   
item1   item2    3
item3   item2    1
item2   item3    2 

如果我交换列然后将它们添加回同一个表,这将是结果:

col1    col2    count   
item1   item2    3
item3   item2    1
item1   item4    1
item2   item3    2 
item2   item1    3
item2   item3    1
item4   item1    1
item3   item2    2 

而 group by 会产生:(正确的结果)

col1    col2    count   
item1   item2    3
item2   item1    3
item4   item1    1
item3   item2    2 

生成这种分组依据的正确查询是什么? 我是否正确地认为该列需要交换和连接,还是有更好的方法来解决这个问题? (我正在使用 Postgres)

在上面我展示了前 1 名的分组,为了保持示例简单,实际上这是前 10 名的分组

这回答了问题的原始版本。

你想要:

select v.col1, v.col2, max(t.count)
from t cross join lateral
     (values (col1, col2), (col2, col1)) v(col1, col2)
group by v.col1, v.col2;

暂无
暂无

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

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