【问题标题】:Select the record with minimum count选择计数最少的记录
【发布时间】:2016-07-05 05:12:32
【问题描述】:

我有如下设置:

表格 - Tasks

| ResourceID |   Name   | T_SEQ | 
|    1       |  Res1    |   90  |
|    1       |  Res1    |   91  |
|    2       |  Res2    |   92  |

我正在运行以下命令:

select ResourceID, COUNT(ResourceID) 
from Tasks 
group by ResourceID

这表明 Res1 的计数为 2,而 Res2 的计数为 1。

现在我想获得最小值,所以在这种情况下我需要获得 2 的 ResourceID,因为它只有 1 个工作,但我不知道该怎么做?

感谢任何可以提供帮助的人。

【问题讨论】:

  • 再添加几行样本数据,同时添加新的预期结果。
  • 如果有两个计数相同会怎样?

标签: sql sql-server count min


【解决方案1】:

一种方法是order bytop

select top 1 ResourceID, COUNT(ResourceID) 
from Tasks 
group by ResourceID
order by COUNT(ResourceID);

【讨论】:

  • 一个疑问:如果超过 1 个 ResourceId 具有相同的最小计数,那么这个查询将只有一个。
  • 完美,如果 ResourceId 具有相同的最小计数没问题,我只需要它来选择第一个/任何。
【解决方案2】:

您可以使用 CTE 解决此问题。这将为您提供所有具有最小计数的行:

; WITH occurrences AS
(
    select ResourceID, COUNT(ResourceID) AS Counts
    from Tasks 
    group by ResourceID
)
, min_occurrences AS
(
    SELECT MIN(Counts) AS min_counts FROM occurrences
)
SELECT ResourceID FROM occurrences a
INNER JOIN min_occurrences b ON a.Counts = b.min_counts

【讨论】:

    猜你喜欢
    • 2014-09-10
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多