求一个月内,商品(按名称分类)销量求和,从高到低排序,然后统计,有哪些商品销售量的和(从高到低)达到了50%..
要求见标题,
示例数据如下:
格式如下:
字段分别为:
日期, 型号, 销售量
12.1 A 2
12.1 B 1
12.1 C 1
12.1 E 3
12.1 F 1
12.1 H 2
12.1 I 1
12.2 A 1
12.2 C 1
12.2 D 1
12.2 E 4
12.2 H 2
上面一共销售了20台(不管型号)..我要知道,哪些商品卖得最好.因此,我可以求合,排序.
得到的结果集为:(不管日期了).
型号, 销售号
E 7
H 4
A 3
C 2
B 1
D 1
F 1
I 1
现在,我想知道,哪些商品我售量占到了总销量的:20%, 很明显,是E 7,如果我要知道销量占到50%的是哪些,很明显, 是:E 7,, H 4,, 如果要达到80%, 那就是E,H ,A,C 了..
[解决办法]
create table ta(日期 varchar(5), 型号 varchar(2), 销售量 int)
insert ta
select '12.1 ', 'A ', 2
union all select '12.1 ', 'B ', 1
union all select '12.1 ', 'C ', 1
union all select '12.1 ', 'E ', 3
union all select '12.1 ', 'F ', 1
union all select '12.1 ', 'H ', 2
union all select '12.1 ', 'I ', 1
union all select '12.2 ', 'A ', 1
union all select '12.2 ', 'C ', 1
union all select '12.2 ', 'D ', 1
union all select '12.2 ', 'E ', 4
union all select '12.2 ', 'H ', 2
select 型号,销售号=sum(销售量),销售号=sum(销售量),
百分比=str(convert(numeric(5,2),sum(销售量))/(select sum(销售量) from ta),5,2)--转换整数
from ta group by 型号
having str(convert(numeric(5,2),sum(销售量))/(select sum(销售量) from ta),5,2)=.35--定义表达式等于35%就行了
order by 销售号 desc
型号 销售号 销售号 百分比
---- ----------- ----------- -----
E 7 7 0.35
(所影响的行数为 1 行)
[解决办法]
上面一共销售了20台(不管型号)..我要知道,哪些商品卖得最好.因此,我可以求合,排序.
得到的结果集为:(不管日期了).
型号, 销售号
E 7
H 4
A 3
C 2
B 1
D 1
F 1
I 1
现在,我想知道,哪些商品我售量占到了总销量的:20%, 很明显,是E 7,如果我要知道销量占到50%的是哪些,很明显, 是:E 7,, H 4,, 如果要达到80%, 那就是E,H ,A,C 了..
个人认为,这个结果具有不确定性,就拿
如果我要知道销量占到50%的是哪些,很明显, 是:E 7,, H 4,来说,也有可能是E7,A3,B2
你是如何确定要取得的货品内容呢!按大小排序也不是合理!需求不明确!