请问 统计各 型号的 销售 比例 的 sql 语句 如何写??????????
例如:订单表记录如下:型号 数量 订单日期
101 2 2005-7-3
101 2 2005-7-4
102 2 2005-7-2
102 6 2005-8-1
103 2 2005-8-2 1.现在要 统计各 型号的 销售 比例,想要得出下面的结果:
型号 总数量 比例 小数
102 8 57.1% 0.571
101 4 28.6% 0.286
103 2 14.3% 0.143
上面结果必须按 比例 从大到小排序 , 小数保留3位,并四舍五入-----------------------------------------------------------------2.还有 问题就是按 订单日期 做条件 例如: 订单日期 从 2005-7-1 至 2005-7-31 的 统计各 型号的 销售 比例,想要得出下面的结果:
型号 总数量 比例 小数
101 4 66.7% 0.667
102 2 33.3% 0.333
103 0 0% 0上面结果 由于 103 型号 7月份没有订单所以显示 0 , 必须按 比例 从大到小排序 , 小数保留3位,并四舍五入
例如:订单表记录如下:型号 数量 订单日期
101 2 2005-7-3
101 2 2005-7-4
102 2 2005-7-2
102 6 2005-8-1
103 2 2005-8-2 1.现在要 统计各 型号的 销售 比例,想要得出下面的结果:
型号 总数量 比例 小数
102 8 57.1% 0.571
101 4 28.6% 0.286
103 2 14.3% 0.143
上面结果必须按 比例 从大到小排序 , 小数保留3位,并四舍五入-----------------------------------------------------------------2.还有 问题就是按 订单日期 做条件 例如: 订单日期 从 2005-7-1 至 2005-7-31 的 统计各 型号的 销售 比例,想要得出下面的结果:
型号 总数量 比例 小数
101 4 66.7% 0.667
102 2 33.3% 0.333
103 0 0% 0上面结果 由于 103 型号 7月份没有订单所以显示 0 , 必须按 比例 从大到小排序 , 小数保留3位,并四舍五入
select a.'型号',(select sum('数量') from '订单表' where a.'型号'='型号') as '总数量',
'总数量'/(select sum('数量') from '订单表' ) as '比例','总数量'/(select sum('数量') from '订单表' )/100 as '小数' from '订单表' group by a.'型号';
对于第二个问题只要再增加一个(where 条件就可以了)
group by 型号 order by 小数 desc2,select 型号,sub(数量),convert(varchar(4),(select sum(数量) from 表 where日期 between '2005-7-1' and '2005-7-31')/sum(数量))+'%',convert(varchar(4),round(select sum(数量) from 表 where 日期 between '2005-7-1' and '2005-7-31' )/sum(数量),3)小数 from 表
where 日期 between '2005-7-1' and '2005-7-31'
group by 型号 order by 小数 desc
就用临时表处理