图1:样本数据
图2:输出不正确
图3:所需输出
查询:我正在尝试按类名和客户(image1示例数据)从列(中位数百分比)中查询最大值
问题:查询显示的是所有客户,而不是具有最大中值的客户(image2结果不正确)。它正确地计算了max(),但是查询将所有客户的值放入class\u name中,而不是具有该max值的客户
我需要的是只有类名称有最大(中位数百分比)和显示客户(图像3(期望输出)
Select
distinct
C.Class_Name,
C.Customer,
C.Max_Median_Percentage
FROM (
SELECT
B.Class_Name,
case (when B.Median_Percentage = Max(B.Median_Percentage) OVER(PARTITION By B.Class_Name ORDER BY B.Median_Percentage desc )
then B.Customer
end as Customer,
Max(B.Median_Percentage) OVER(PARTITION By B.Class_Name ORDER BY B.Median_Percentage desc ) as Max_Median_Percentage
FROM (
SELECT
A.Class_Name,
A.Customer,
A.Date_Time
A.Median_Percentage
From table1 as A
) as B
) as C
2条答案
按热度按时间neskvpey1#
你可以用
percentile_cont()
如果您的数据库不直接支持“中值”函数:如果你的数据库没有
percentile_cont()
或者percentile_disc()
函数,使用一个简单的ntile()
:如果表中的行数为奇数,则此方法完全有效
classid
. 对于偶数,它是由1关闭。你可以很容易地处理,但更复杂的是:s8vozzvw2#
也许这是有用的-
加载提供的测试数据
按类名查找最大中位数百分比行