sql - 计算 SQL Server 中两列之间的关系
问题描述
早上好,我在 sql studio 中有两列,我需要计算一列和另一列元素之间的关系。问题是它似乎只是在“一个方向”计数,我想知道两者。如果我向您展示一个简单的示例,可能会更容易。我正在使用 SQL 服务器。
这是原始表:
Col1 Col2
3 1
3 2
3 2
4 4
4 5
4 6
3 2
2 3
2 3
如果我执行以下操作(基于 count(concat)),它会给出以下结果。
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
但我想要的也是计算这两个元素之间的关系,如果这是在一列或另一列中的话。因此,3-2(或 2-3)之间的关系数为 5。可以这样做吗?
3 2 5
任何建议都会非常受欢迎!提前致谢!
解决方案
大多数数据库支持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
表达式实现类似的逻辑。
推荐阅读
- python - Mongodb查询或ETL工具
- python - 如何打开 python NLTK 下载器
- visual-studio-code - 如何设置 VSCode 以将花括号放在同一行?
- complexity-theory - 确定 Big-Oh / Big-Theta 或 Big-Omega
- java - 不包含空格和至少一个“*”的字符串的正则表达式
- android - TimePickerDialog 中的 AM/PM 文本中断
- java - Java 方法和数组
- mysql - 如何在mysql触发器中将点(。)连接到像pic.jpeg这样的字符串?
- mysql - 如何将一列 INNER JOIN 连接到两个不同的列?
- objective-c - FFmpeg 跳转到最近的帧