[英]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.