【问题标题】:SQL Count elements in pairsSQL 对元素进行成对计数
【发布时间】:2015-12-08 20:05:53
【问题描述】:

我有一张简单的桌子

CREATE TABLE aaa AS
(
  ogid integer NOT NULL,
  ocolor character varying(80) NOT NULL,
  vgid integer NOT NULL,
  vcolor character varying(80) NOT NULL,
)

aa 包含一些值,如本例所示

Ogid OColor Vgid VColor
1   v       1   v
1   v       5   r
1   v       8   g
2   r       5   r
3   g       7   r
4   g       5   r
5   r       7   r
5   r       9   g
6   g       6   g

我需要计算每对(OColor,VColor)中的元素数量,将它们组合在一起(例如 g-r 和 r-g 的元素放在一起)。

我需要类似的结果:

OColor Vcolor nelement
b      b      10
b      g      16
g      v      2 

【问题讨论】:

  • 请向我们展示您到目前为止所做的尝试。
  • 很难理解数据结构。你能澄清一下吗?
  • b 怎么会出现在预期输出中?

标签: sql postgresql select count


【解决方案1】:

如果我理解正确,您可以使用least()greatest()

select least(ocolor, vcolor), greatest(ocolor, vcolor), count(*)
from table t
group by least(ocolor, vcolor), greatest(ocolor, vcolor);

但是,您的问题令人困惑,因为结果似乎与样本数据无关。

【讨论】:

  • 我认为这是 OP 一直在要求的。我只是在玩弄它,但这里是 SQLFiddle demo 为您提供出色的解决方案。
  • 非常感谢。这是一个简单而出色的解决方案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 2017-07-06
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多