请问 统计各 型号的 销售 比例 的 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位,并四舍五入

解决方案 »

  1.   

    对于你的第一个问题:
    select a.'型号',(select sum('数量') from '订单表' where a.'型号'='型号') as '总数量',
         '总数量'/(select sum('数量') from '订单表' ) as '比例','总数量'/(select sum('数量') from '订单表' )/100 as '小数'  from '订单表'  group by a.'型号';
    对于第二个问题只要再增加一个(where 条件就可以了)
      

  2.   

    1.select 型号,sub(数量),convert(varchar(4),(select sum(数量) from 表 where...)/sum(数量))+'%',convert(varchar(4),round(select sum(数量) from 表 where...)/sum(数量),3)小数 from 表
    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
      

  3.   

    恩 这个又有 收藏先 access种除了求余 取小数点后几位不一样 别的都一样
      

  4.   

    谁知道 在 access 中 如何写 ????
      

  5.   

    谁知道 在 access 中 如何写 ????
      

  6.   

    在Access不行
    就用临时表处理
      

  7.   

    access真的不能用sql 实现????
      

  8.   

    access也可以使用sql,语法差不多,上面写的这些在access中应该也没问题