序号      进价         售价            比率1           比率2
1         3           30             15%              0
2         5           50             25%              40%
3         6           40             20%              60%
4         10          80             40%             100%    
    
              售价总额:200表中字段为序号,售价.
比率1 =每条记录的售价/售价金额
比率2 = 前几条记录的比率1 相加
能用一条SQL语句实现吗?
特别是比率1能实现吗?
先谢谢了!

解决方案 »

  1.   

    售价总额:200 是sum(售价)得出来的,能写在同一个SQL语句中吗?
    SELECT 售价/sum(售价) FROM 肯定是不对的呀
      

  2.   

    先求一下sum就行了。
    select 售价,(select sum(售价) from table) 售价金额 from table
      

  3.   

    对比率1用分析函数就可以了:select ratio_to_report(售价) over() AS "比率1" from 表
      

  4.   

    select ratio_to_report(售价) over() "比率1",sum(售价) over (order by 序号 rows between unbounded preceding and current row) from 表
    这样就可以计算移动平均值,注意order by字句为你想要的排序就行,rows between unbounded preceding and current row 也可以不加,因为如果有order by 子句时,默认就是从第一行到当前行。如果order by子句也没有时,就默认是所有行了。
      

  5.   

    忘记了,sum(售价) over (order by 序号 rows between unbounded preceding and current row)这句的后面丢了一点,应该再除以sun(售价) over ()就行了。CSDN里面的贴子不知道能不能修改,郁闷。
      

  6.   

    xingwang75(旺仔) 的解決方法很好!