【问题标题】:Group rows based on similar paired values根据相似的配对值对行进行分组
【发布时间】:2018-07-08 00:19:53
【问题描述】:

如果我有一个数据结构如下所示的表:

a,b
1,2
2,1
3,1

我想要做的是根据 2 个值 a 和 b 将这 3 行分组为 2 行,如果该组合位于任一行中,则合并为 1 行,这样我就可以进行计数查询。我想得到一个类似的结果集:

a,b,count
1,2,2
3,1,1

【问题讨论】:

  • 能否请您展示一下表格结构以及到目前为止您所做的工作?
  • 你的预期输出是什么?
  • 不,你没有问一个简单的问题。你问了一个非常不清楚的问题。您的编辑版本更好,但是在阅读 mu 发布的答案之前,我仍然无法理解它。如果你不能接受这种性质的批评,那么 SO 可能不适合你。
  • 没有人有义务花费时间要求澄清。我们每天都会收到大量写得不好的问题。无论如何,大多数提问者从不回应澄清请求。投反对票和近距离投票都是适当且合理的回应。任何更多都是 100% 纯粹的慷慨,不是必需的,当您没有收到更多时,您当然不应该要求更多或抱怨。
  • 也就是说,你是对的,我很抱歉。投票结束一个我真正认为是信息丰富的问题​​,感觉真的很糟糕。在这一点上,我真的很乐意让它成为我船上任何人都能找到的最佳问题。

标签: sql postgresql


【解决方案1】:

您可以使用greatest and least 以一致的顺序获取这对列:

select count(*)
from things
group by greatest(a, b), least(a, b)

这将为您提供您正在寻找的2。

【讨论】:

  • 哇,好主意!谢谢,这确实使我遇到的问题更加清晰。在我将其标记为已接受之前,我将稍等片刻,以防有更直接的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
  • 1970-01-01
  • 2022-01-13
  • 2018-10-27
  • 2011-01-14
相关资源
最近更新 更多