【问题标题】:How can I get count of unique values across two columns in a table?如何获取表中两列的唯一值计数?
【发布时间】:2019-05-01 00:13:26
【问题描述】:

我有一个包含 column1 和 column2 以及其他列的表?

我需要对取自 column1 和 column2 的所有行的唯一值进行计数。 可能的查询: 从中选择计数(*) ((从 table1 中选择不同的 column1)UNION (从 table1 中选择不同的 column2));

我还需要计算所有行中的唯一值,如下所示:- “列 1”+“-”+“列 2” "column2" + "-" + "column1"

可能的查询: 从中选择计数(*) ((从 table1 中选择不同的 column1,column2)UNION (从table1中选择不同的column2,column1))

我认为这两个查询都可能存在缺陷。

样本数据:

第 1 列 第 2 列 值 1 空 空值1 价值 1 价值 2 价值 2 价值 1 值 4 空 值5 null

查询 1 的结果:4(Value1、Value2、Value4、Value5) 查询 2 的结果:5 (Value1, Value1-Value2, Value2-Value1, Value4, Value5)

将忽略 Null 并排除连字符。或者可以忽略连字符。不特别关注连字符。

【问题讨论】:

  • 样本数据和期望的结果真的很有帮助。
  • 你怎么可能通过运行“select count(*) 得到一个“唯一的 values 列表”?即使你没有知道如何解决您的问题,您不能指望 COUNT 给您一个值列表。
  • 我需要一个计数,而不是一个值列表。我纠正了措辞。
  • 我添加了示例数据。

标签: sql oracle distinct multiple-columns


【解决方案1】:

听起来你需要类似的东西

SELECT 
COUNT(DISTINCT [a])

FROM    
(SELECT Column1 [a]
FROM TableA
UNION ALL
SELECT Column2
FROM TableA 

) [x]

【讨论】:

  • 既然最终还是要对结果进行去重,为什么不干脆用UNION代替UNION ALL呢?那么你就不需要计算 DISTINCT。
猜你喜欢
  • 2017-10-12
  • 1970-01-01
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 2020-12-05
  • 2021-06-26
  • 1970-01-01
相关资源
最近更新 更多