Sql server 2012 按列划分条件计算中值
我需要计算标签为标签的项目的中位数,以及具有类似项目名称(如C、E和F)的组。例如,标签C1、标签C2和标签C3的中位数。其余项目的中位数应根据标签和项目名称计算Sql server 2012 按列划分条件计算中值,sql-server-2012,Sql Server 2012,我需要计算标签为标签的项目的中位数,以及具有类似项目名称(如C、E和F)的组。例如,标签C1、标签C2和标签C3的中位数。其余项目的中位数应根据标签和项目名称计算 Label || Item_Name || Price Tag || Tag C1 || 231 Tag || Tag C2 || 312 Tag || Tag C3 || 416 Tag || Tag E1 || 523 Ta
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,
在标签上进行分区时,如何包含基于项目名称的条件?您可以使用关于项目名称的case语句-这是一个基于项目名称前五个字符作为标准的建议:
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
非常感谢,简。