我需要计算标签为“Tag”的项目的中位数和具有类似Item_Names的组,例如C,E和F. “标签C1”,“标签C2”和“标签C3”的中位数。对于其余项目,将根据Label和Item_Name计算中位数。
Label || Item_Name || Price
Tag || Tag C1 || 231
Tag || Tag C2 || 312
Tag || Tag C3 || 416
Tag || Tag E1 || 523
Tag || Tag E2 || 152
Tag || Tag E3 || 629
Tag || Tag E4 || 29
Tag || Tag E5 || 727
Tag || Tag F1 || 671
Tag || Tag F2 || 1002
Tag || Tag F3 || 96
No_Tag || G || 61
No_Tag || H || 802
No_Tag || H2 || 36
No_Tag || J3 || 102
No_Tag || K || 546
No_Tag || M || 238
下面提到的查询在整个项目集中返回中位数
PERCENTILE_CONT(.50) WITHIN GROUP (ORDER BY Price) OVER (PARTITION BY Label) med_price
我也试过了CASE,但它仍然给出了相同的结果
CASE
WHEN Item_Name LIKE ('Tag C%') THEN PERCENTILE_CONT(.50) WITHIN GROUP (ORDER BY Price) OVER (PARTITION BY Label)
WHEN Item_Name LIKE ('Tag E%') THEN PERCENTILE_CONT(.50) WITHIN GROUP (ORDER BY Price) OVER (PARTITION BY Label)
WHEN Item_Name LIKE ('Tag F%') THEN PERCENTILE_CONT(.50) WITHIN GROUP (ORDER BY Price) OVER (PARTITION BY Label)
ELSE PERCENTILE_CONT(.50) WITHIN GROUP (ORDER BY Price) OVER (PARTITION BY Label, Item_Name)
END AS med_price,
如何在“Label”分区时包含基于“Item_Name”的条件?
答案 0 :(得分:1)
您可以在“Item_Name”上使用case语句 - 这是基于Item_Name的前五个字符作为您的标准的建议:
PERCENTILE_CONT(.50) WITHIN GROUP (ORDER BY Price) OVER (PARTITION BY Label, CASE WHEN Label = 'Tag' THEN Left(Item_Name,5) ELSE Item_Name END) AS Med_Price