【发布时间】:2020-06-30 01:02:02
【问题描述】:
Image1:样本数据
Image2:输出不正确
Image3:所需的输出
查询:我正在尝试按 Class_Name 和 Customer(image1 示例数据)查询列 (Median_Percentage) 中的最大值
问题:查询显示的是所有客户,而不是具有最大中值的客户(image2 错误结果)。它正在正确计算 Max(),但查询将所有客户的值而不是在 Class_Name 中具有该 Max 值的值放置
我只需要具有 Max(Median_Percentage) 的 Class_Name 并显示给客户。 (image3 所需的输出)
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
【问题讨论】:
-
用您正在使用的数据库标记您的问题。我不确定 SQL 与这个问题有什么关系,这本身似乎很清楚。
-
您使用的是哪种 DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您使用的数据库产品添加tag。 Why should I tag my DBMS
-
谢谢!我为数据库添加了标签。我还简化了我正在处理的查询,希望对您有所帮助
标签: sql apache-spark-sql max window-functions