早上好,我在sql studio中有两列,我需要计算一列与另一列之间的元素之间的关系。问题在于,似乎只是在朝着“一个方向”计数,我想两者都知道。如果在一个简单的示例中向您展示,可能会更容易。我正在使用SQL Server。
这是原始表:
InvalidKeyException (Invalid AES key length: 15 bytes)
如果我执行以下操作(基于count(concat)),则会得到以下结果。
Col1 Col2
3 1
3 2
3 2
4 4
4 5
4 6
3 2
2 3
2 3
但是我还要计算两个元素之间的关系,如果这是在一列或另一列中的话,则是独立的。因此,3-2(或2-3)之间的关系数为5。可以这样做吗?
select Col1, Col2, count(concat(Col1, Col2)) as weight
FROM test1
group by Col1, Col2
Col1 Col2 weight
3 1 1
3 2 3
2 3 2
4 4 1
4 5 1
4 6 1
任何建议都将受到欢迎!提前致谢!
答案 0 :(得分:2)
大多数数据库支持least()
和greatest()
。这允许您执行以下操作:
select least(col1, col2) as col1, greatest(col1, col2) as col2,
count(*) as cnt
from t
group by least(col1, col2), greatest(col1, col2);
如果您的数据库不支持这些方便的功能,则可以使用case
表达式实现类似的逻辑。