首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取发生最大时间( sql )的数字

获取发生最大时间( sql )的数字
EN

Stack Overflow用户
提问于 2016-10-02 20:39:27
回答 1查看 38关注 0票数 0

我有一个场景,我必须得到每个公司代码的最大时间发生的数字。问题是,当两个或三个数字出现相同的次数时,我必须取平均值。

代码语言:javascript
复制
Company Code   Value
-----------------------
AA               2
AA               2
AA               3
BB               5
BB               5
BB               7
BB               7
BB               9

在上面的场景中,输出应该是

  • AA 2-因为2发生两次,而3只发生一次。
  • BB6--因为对BB来说,5和7都是2,所以我必须取平均值。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-02 20:51:25

在下面的查询中,在获得最终输出之前完成以下计算。

(i)在此分区级别(Company_Code,Value)获取计数,并按降序顺序分配一个级别。

(ii)一旦分配了等级,选择具有rank=1的所有行,并为每个Company_Code选择平均值。

代码语言:javascript
复制
SELECT Company_Code,
       AVG(Value) 
  FROM
     (  
       SELECT Company_Code,
              Value,
              RANK() OVER ( PARTITION BY 
                            Company_Code,Cnt_Company_Code_Value
                            ORDER BY Cnt_Company_Code_Value DESC 
                          )  
           AS Rank_Company_Code_Value 
      FROM     
        (
           SELECT Company_Code, 
                  Value,
                  COUNT(*) OVER ( PARTITION BY Company_Code,Value ) 
                  AS Cnt_Company_Code_Value 
             FROM Table
        )
    )
WHERE Rank_Company_Code_Value = 1
GROUP BY Company_Code;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39821482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档