【问题标题】:Finding mode in SQL ServerSQL Server 中的查找模式
【发布时间】:2020-12-03 21:20:43
【问题描述】:

我有以下查询,它返回数据集中重复次数最多的模式

select top 1 TargetPriceRec as mode 
from PricingRecurring  
Group By TargetPriceRec order by Count(*) desc

我从中得到了重复次数最多的值,但问题是如果没有重复值,我仍然会得到数据集中的最高值。如果数据集中没有重复值,并且如果有多个重复值,我如何获得一个空值,因为没有单一模式,我仍然得到一个空值。

【问题讨论】:

  • 请展示一些示例数据和预期结果,以说明您要完成的工作。
  • 我觉得这个问题虽然基本,但很清楚。不知道票数接近是怎么回事。

标签: sql sql-server sql-server-2012


【解决方案1】:

您可以使用以下方式获得所有模式:

select top (1) with ties TargetPriceRec as mode 
from PricingRecurring  
Group By TargetPriceRec
order by Count(*) desc;

为了您想要的结果:

select (case when count(*) = 1 then max(TargetPriceRec) end) as mode
from (select top (1) with ties TargetPriceRec 
      from PricingRecurring  
      Group By TargetPriceRec
      order by Count(*) desc
     ) m

【讨论】:

  • 非常感谢 Gordon ..一如既往,你摇滚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 2019-07-27
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多