SQL Count元素成对出现

时间:2015-09-12 09:46:13

标签: sql postgresql select count

我有一张简单的表

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 

1 个答案:

答案 0 :(得分:1)

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

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

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