因此,我有一个结果集,该结果集在1列中占总数的百分比,在另一列中有名称。
例如-
Name | Percentage
Jill | 12
Sam | 24
Steve| 2
Jeff | 3
Elvis | 59
我正在尝试将少于15%的任何结果压缩成行,
所以我的结果将是
Name | Percentage
Everyone else| 17
Sam | 24
Elvis | 59
谢谢!
答案 0 :(得分:0)
在源自的表(子查询)中使用case
表达式(子查询)将所有不足15%的人放在一起。 GROUP BY
其结果:
select name, sum(Percentage)
from
(
select case when Percentage > 15 then name
else 'Everyone else'
end as name,
Percentage
from tablename
) dt
group by name
答案 1 :(得分:0)
您可以使用APPLY
:
SELECT tt.Name, SUM([Percentage]) AS [Percentage]
FROM table t CROSS APPLY
( VALUES (CASE WHEN [Percentage] < 15
THEN 'Everyone else'
ELSE Name
END)
) tt(Name)
GROUP BY tt.Name;
答案 2 :(得分:0)
对于这样一个简单的条件,您可以只使用CASE
表达式:
select (case when percentage < 15 then 'Everyone else'
else name
end) as name,
sum(percentage) as percentage
from t
group by (case when percentage < 15 then 'Everyone else'
else name
end)
order by sum(percentage) asc;