或者试用以下线的东西。这里的百分比在CTE中计算:
DECLARE @countries TABLE (name varchar(16), hit INT);
INSERT INTO @countries
VALUES
('UK',1),
('UK',1),
('UK',1),
('UK',1),
('UK',1),
('UK',1),
('UK',1),
('UK',1),
('UK',1),
('UK',1),
('FRA',1),
('FRA',1),
('FRA',1),
('FRA',1),
('FRA',1),
('USA',1),
('MEX',1);
WITH MY_PERCENTAGES AS
(
SELECT name,
CAST(count(*) AS NUMERIC(5,2))
/
CAST(SUM(count(*)) OVER() AS NUMERIC(5,2)) * 100.
AS percentage
FROM @countries
GROUP BY name
)
SELECT
name,
SUM (percentage) AS percentages
FROM
(
SELECT
CASE
WHEN percentage <6 THEN
'OTHER'
ELSE
name
END AS name,
percentage
FROM MY_PERCENTAGES
) TMP
GROUP BY name;
非常“干净”的代码。剪下供将来使用。 – 2011-06-16 12:48:33