我的表结构如下所示
Temp
Customer_id | sum
现在我必须创建带有额外列 customer_type 的视图,如果客户位于前 10% 的客户中,则分配值 1(总和的降序,客户总数可能会有所不同),如果客户位于 10%-20% 之间,则分配值为 2,3如果客户在 20%-60% 之间,如果客户在 60%-100% 之间,则为 4。我怎样才能做到这一点?
我只能提取前 10% 和 10% - 20% 之间的数据,但无法将值分配为(来源)
SELECT * FROM temp WHERE sum >= (SELECT sum FROM temp t1
WHERE(SELECT count(*) FROM temp t2 WHERE t2.sum >= t1.sum) <=
(SELECT 0.1 * count(*) FROM temp));
和(不是有效的只是增强上面的代码)
select * from temp t1
where (select count(*) from temp t2 where t2.sum>=t2.sum)
>= (select 0.1 * count(*) from temp) and (select count(*) from temp t2 where t2.sum>=t1.sum)
<= (select 0.2 * count(*) from temp);
示例数据可在sqlfiddle.com上获得