我有一个场景,我必须得到每个公司代码的最大时间发生的数字。问题是,当两个或三个数字出现相同的次数时,我必须取平均值。
Company Code Value
-----------------------
AA 2
AA 2
AA 3
BB 5
BB 5
BB 7
BB 7
BB 9在上面的场景中,输出应该是
提前感谢
发布于 2016-10-02 20:51:25
在下面的查询中,在获得最终输出之前完成以下计算。
(i)在此分区级别(Company_Code,Value)获取计数,并按降序顺序分配一个级别。
(ii)一旦分配了等级,选择具有rank=1的所有行,并为每个Company_Code选择平均值。
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;https://stackoverflow.com/questions/39821482
复制相似问题