【问题标题】:SELECT MAX of COUNT最多选择 COUNT 个
【发布时间】:2012-07-25 09:13:07
【问题描述】:

我有一张“很好”的桌子。它包含一个列 app_rate_unit(类型:nvarchar)。 我的目标是计算表中每个不同的值,并让 DBMS (MS Server 2005) 给我最常出现的值。

这是我的代码:

SELECT MAX(app_rate_unit) AS MAX_APP
  FROM (SELECT app_rate_unit, COUNT(*) AS co
          FROM dbo.well AS w
         GROUP BY app_rate_unit
        ) AS derivedtbl_1

然而,问题在于,我的 DBMS 实际上向我提供的计数最少。

SideQuestion:计数时如何过滤外键(在表中)和 NOT NULL(在 app_rate_unit 中)?

【问题讨论】:

    标签: sql sql-server-2005 count max


    【解决方案1】:
    select top 1 app_rate_unit, count(*) from dbo.well
    group by app_rate_unit
    order by count(*) desc
    

    【讨论】:

    • 如果有多个行具有相同的最大计数怎么办,那么我们应该如何编写一个查询来选择所有具有最大计数的行,而不是只选择前 1 行?
    【解决方案2】:

    试试这个

        SELECT 
            COUNT(app_rate_unit)AS MAX_APP , 
            app_rate_unit 
        FROM 
            dbo.well
        WHERE
                app_rate_unit IS NOT NULL
        GROUP BY 
            app_rate_unit 
        ORDER BY 
                MAX_APP DESC
    

    上面的脚本会给你计数和项目。如果您不确定只有一项会出现最大次数,您可以更改计数。

    【讨论】:

    • 就像一个魅力。为什么它不计算 NULL 值而 stb 的语句呢?
    • 可能是因为 NULL 不大于任何其他值。但是我已经明确添加了 NULL 检查条件。检查编辑的脚本。
    • 他得到了“where”条件。无论如何,我不知道 Rain 为什么使用两个选择,他只需要一个
    • @stb:因为我无法在同一个查询中应用 MAX 和 Count。它给出了错误。无法对包含聚合或子查询的表达式执行聚合函数。如果可能的话,请让我知道如何使用单个 SELECT 来编写它。
    • 您没有在查询中使用 MAX 聚合。看看我的声明,它和你的完全一样,并且只使用一个选择。
    【解决方案3】:
    select top 1 count(*) as co from dbo.well as w group by app_rate_unit
    order by count(*) desc
    

    【讨论】:

    • 有效,但我不想要计数值,而是发生最多的值的名称。你对我提出的 SideQuestion 有什么意见吗?
    • 我认为他想获得计数最高的 app_rate_unit,而不是计数本身。看看我的陈述。
    【解决方案4】:

    在 PostgreSQL 中,我们可以编写使用 max of count 作为查询

    select max(count) from (
    
    select count(id) from Table _name group by created_by,status_id having status_id = 6 ) as Alias
    

    例如

    select max(count) from (
    
    select count(id) from orders group by created_by,status_id having status_id = 6 ) as foo
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-11
      • 2011-10-06
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      相关资源
      最近更新 更多