求计算一个值 =〖(C1×(1- R1)+ (C2×(1- R2)+…+(CN×(1- RN)〗/N
计算周期date 表t1是这样的
date     name c
20100102 张三 c1
20100103 张三 c2
20100104 张三 c3
...
20100102 李四 c1
20100103 李四 c2
20100104 李四 c3
。。
表t2是这样的
 date   R
20100102 R1
20100103 R2
20100104 R3
...
最后想根据这个公式得出
张三  公式所得值
李四  公式所得值不知道在oracle中该如何处理哦,请各位高手指教,谢谢了!

解决方案 »

  1.   


    --求协方差:VARIANCE(DISTINCT|ALL)
      SQL> select variance(sal) from emp;VARIANCE(SAL)
    -------------
       11914726.6SQL> 
      

  2.   

    VARIANCE(x)方差函数,不过你的好像不是求方差。
      

  3.   


    --COVAR_POP 函数 
    --功能描述:返回一对表达式的总体协方差。
      

  4.   

    select sum(cr)/count(cr) from 
    (
        select t1.date,c*(1-r) cr from t1,t2 where t1.date=t2.date
    )
      

  5.   

    额,楼上的这个应该不行哦。
    VARIANCE(x) 这个函数,高手能讲解下如何使用吗?
    谢谢各位了
      

  6.   

    SQL> select * from test;        ID
    ----------
             1
             4
             5
             3SQL> select VARIANCe(id) from test;VARIANCE(ID)
    ------------
    2.9166666666SQL> 
      

  7.   

    我是这么写的,不知道各位高手觉得有没有什么问题哦?
    SELECT 
    SUM(s.c*(1-s.r))/COUNT(1) AS v,s.sname
    FROM(
    SELECT t1.sdate,t1.sname,t1.c,t2.r FROM t1 LEFT JOIN t2 ON(t1.sdate=t2.sdate)
    )  s GROUP BY s.sname
      

  8.   

    没有问题,这样简洁一点
    SELECT SUM(t1.c * (1 - t2.r)) / COUNT(1) AS v, t1.sname
      FROM t1, t2
     WHERE t1.sdate = t2.sdate(+)
     GROUP BY t1.sname