我有以下方式的表格:
ID , sales
1, 1
2, 1
3, 2
4, 2
5, 3
6, 2
7, 3
8, 5
9, 9
10, 3
11, 2
我想要基本实现的是我想根据他们的销售将ID分为3组:高,中,低
O / P
ID, sales, group
1, 1, low
2, 1, low
3, 2, low
4, 2, low
5, 3, low
6, 2, low
7, 3, low
8, 5, med
9, 9, high
10, 3, low
11, 2, low
答案 0 :(得分:1)
选择sales
的最大值并将其除以3.在CASE
中使用该值来对销售数字进行排名。
SELECT id,
sales,
CASE
WHEN sales <= convert(decimal, (SELECT max(sales)
FROM elbat))
/ 3
THEN 'low'
WHEN sales <= convert(decimal, (SELECT max(sales)
FROM elbat))
/ 3 * 2
THEN 'med'
ELSE
'high'
END group
FROM elbat;
只是为了证明这个想法。您可能想要对运算符进行调整(例如<
而不是<=
)和计算,例如将ceil()
应用于结果等。
答案 1 :(得分:0)
您可以使用case
表达式:
select (case when sales < 4 then 'low'
when sales < 7 then 'med'
else 'high'
end) as sales_group
答案 2 :(得分:0)
您可以使用group by
子句:
select t1.sales_group, count(*) as counts, sum(t.sales) as total_sales_group
from table t
cross apply ( values (case when sales < 4 then 'low'
when sales < 7 then 'med'
else 'high'
end)
) t1 (sales_group)
group by t1.sales_group;