检索跨多个列的不同计数

Posted

技术标签:

【中文标题】检索跨多个列的不同计数【英文标题】:Retrieving the distinct count across multiple columns 【发布时间】:2021-06-22 08:31:21 【问题描述】:

假设我在 MS SQL Server 中有下表:

Make Model Year
Honda Accord 1997
Honda Accord 1997
Honda Accord 1997
Honda Civic 2001
Honda Civic 2005
Honda Civic 2005
Toyota Corolla 2010
Nissan Pathfinder 1997

我希望能够检索唯一组合的计数并获得如下结果:

Make Model Year Count
Honda Accord 1997 3
Honda Civic 2001 1
Honda Civic 2005 2
Toyota Corolla 2010 1
Nissan Pathfinder 1997 1

我认为我可以使用 COUNT(DISTINCT()) 之类的东西,但在 MS SQL Server 中,跨多个列的 COUNT(DISTINCT()) 无效。我觉得我必须使用GROUP BY,但我不知道从哪里开始。

【问题讨论】:

这不只是一个COUNT..?什么DISTINCT 值,在组内,你在这里数?您只向我们展示了 3 列,而且它们似乎都在该组中。您是否没有向我们展示第 4 列? 【参考方案1】:

它只是分组并计算它们:

select Make ,Model, Year, COUNT(*)
from your table 
group by Make ,Model, Year

【讨论】:

【参考方案2】:

您可以将 yourtable 替换为实际的表名。

Select Make,
       Model,
       Year,
       count(*) Count
From yourtable
Group by Make,
         Model,
         Year

【讨论】:

以上是关于检索跨多个列的不同计数的主要内容,如果未能解决你的问题,请参考以下文章

从单个表中检索具有不同值的同一列的多个输出时的性能问题

按标志检索与时间相关的数据统计(计数),按外部 id 拆分,跨多个表,在一个数据集中返回

使用 CriteriaBuilder 的 JPA 计数(*)。如何使用 CriteriaBuilder 检索 count(*) 列

跨多个实例查询 prometheus 计数器

SQLPlus - 跨多个表的计数函数

跨多个表的列的 SQL 唯一约束