VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: lxyxhl

求一个月内,商品(按名称分类)销量求和,从高到低排序,然后统计,有哪些商品销售量的和(从

[复制链接]

0

主题

7

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-5-29 22:00:01 | 显示全部楼层
Select  Sum(sl) , name From tab  Group By name  Order By name desc
第二个问题有点没明白,  你是不是要计算出那些上占总销售量的20%  50%  80%  那样的组合很多拉  而且还没有查询的顺去,  例如占20% 还可能是  H  A
回复

使用道具 举报

0

主题

93

帖子

46.00

积分

新手上路

Rank: 1

积分
46.00
发表于 2020-5-30 20:45:02 | 显示全部楼层
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

为了简化语句用变量:
declare @sql varchar(2000)
set @sql='(select 型号,销售号=sum(销售量),
百分比=str(convert(numeric(5,2),sum(销售量))/(select sum(销售量) from ta),5,2)
from ta group by 型号)'
set @sql='select *,(select sum(cast (百分比 as numeric(5,3))) from '+@sql
        +' as tb where  百分比!>b.百分比)as 递减'
        +' from '+@sql+' as b '
set @sql='select 型号,销售号,百分比 from ('+@sql+') as ta where 递减>.5'--占的比列
--print @sql
exec (@sql)

型号   销售号         百分比   
---- ----------- -----
E    7            0.35
H    4            0.20
declare @sql varchar(2000)
set @sql='(select 型号,销售号=sum(销售量),
百分比=str(convert(numeric(5,2),sum(销售量))/(select sum(销售量) from ta),5,2)
from ta group by 型号)'
set @sql='select *,(select sum(cast (百分比 as numeric(5,3))) from '+@sql
        +' as tb where  百分比!>b.百分比)as 递减'
        +' from '+@sql+' as b '
set @sql='select 型号,销售号,百分比 from ('+@sql+') as ta where 递减>.2'--大于占20%=占80%
--print @sql
exec (@sql)

型号   销售号         百分比   
---- ----------- -----
A    3            0.15
C    2            0.10
E    7            0.35
H    4            0.20

回复

使用道具 举报

3

主题

12

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
 楼主| 发表于 2020-6-28 12:45:01 | 显示全部楼层
26426613
是这样的,结果必须是,数量从大到小的方式来查询.
可以这么说:
比如,给定一个百分比:60%.
那么,我先找销售最高的,E7,,但没有达到60%, 于是,我必须把销量第二名的加进去(而不能加其它的进去),销量第二名的是H4,, 它们仍然没有达到12台(60%). 于是把它三名加进去, 第三名为A3,有14台了,已经达到60%..查询结束.....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表