SQL Server计数2列中具有不同值的数据

米莎·扎斯拉夫斯基(Misha Zaslavsky)

我想进行智能计数操作,以便如果列中的数据相同,则将其计为1。

我的桌子是:

dbo.Messages 
(
    FromUserId INT,
    ToUserId INT
)

数据:

INSERT dbo.Messages VALUES(1, 5), (2, 20), (5, 1), (1, 5);

计数应返回2,因为(1,5)和(5,1)在我的算法中相同。

如何在SQL Server TSQL中编写它?

提前致谢。

埃瓦尔达斯(Evaldas Buinauskas)

效果很好:

CREATE TABLE #Messages 
(
    FromUserId INT,
    ToUserId INT
);

INSERT #Messages VALUES(1, 5), (2, 20), (5, 1), (1, 5);

SELECT COUNT(*)
FROM (
  SELECT M1.FromUserId, M1.ToUserId
  FROM #Messages AS M1
  EXCEPT
  SELECT M2.ToUserId, M2.FromUserId
  FROM #Messages AS M2
  WHERE M2.ToUserId > M2.FromUserId
  ) AS T;

派生表EXCEPT将删除您的重复项,然后仅计算所谓的唯一值。请记住,这里不需要DISTINCT关键字,EXCEPT可以删除所有重复项。

派生表的结果:

FromUserId ToUserId 
---------- -------- 
1          5        
2          20   

您可以在此处检查此查询的工作方式:https : //data.stackexchange.com/stackoverflow/query/524634/counting-unique-values

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在同一列中将具有相同名称的不同数据计数为1计数sql server

如何根据sql server中的where条件获取表中所有列的值的不同计数?

SQL具有两列不同的计数

SQL Server搜索具有一个值的不同数据类型的多列

如何使用 SQL Server 从数据库中获取具有列的表的特定列中的所有表名和不同值

如何从具有不同节点的XML中获取数据作为SQL Server中的列

SQL查询以查找具有不同值的表中的数据

SQL Server:在整个数据库中搜索具有NULL值的所有列

SQL选择两列中具有不同值的行

SQL Server中列值的总计数

使用SQL选择列1中具有相同值但列2和3中具有不同值的所有行

SQL Server与Oracle中具有空值的列

SQL:如何从具有字符串值的列中查找特定类别值的计数

如何根据另一列 SQL 中的值创建具有计数值的新列

SQL中具有不同语句计数的存储过程

SQL Server 2008中的计数(不同([值])OVER(分区依据)

数据集SQL Server中不同ID的计数

SQL Server 2008中列的不同值

SQL:如何获取列中每个不同值的计数?

SQL查询以查找两列中不同值的计数

计算来自SQL中两列的不同值的计数

SQL Server 中 2 个不同日期列的每周计数

如何从具有多行的SQL Server表中将值(分隔符分隔)为不同的列?

如何在 SQL 中更新具有相同值或不同值的多個列?

用于根据SQL Server中的列值获取具有列的表的SQL查询设计

具有相同数据的SQL中的最大计数(*)错误

如何获取不同日期之间的SQL Server中的计数数据列,并且每个日期都有时间范围?

如何對相鄰列中具有不同值的SQL中的多行求和

如何在 SQL Server 中比较具有相同 ID 的不同行中的相同值