SELECT dept, name sal,
       SUM (sal) OVER (PARTITION BY dept ORDER BY name) running_sal,
       SUM (sal) OVER (PARTITION BY dept) sum
 FROM 表;
这个是用SUM OVER做的,有没有不用SUM OVER做的?
谢谢大虾了

解决方案 »

  1.   

    select t1.dept,t1.name ,sum(t2.sal) running_sal,t3.sum 
     from test t1,test t2,(select dept,sum(sal) sum from test group by dept) t3
     where  t1.dept=t2.dept and t1.name>=t2.name and t1.dept=t3.dept
     group by t1.dept,t1.name,t3.sum
      

  2.   

    能不能帮我解释一下
    where t1.dept=t2.dept and t1.name>=t2.name and t1.dept=t3.dept
    group by t1.dept,t1.name,t3.sum
    没看懂
      

  3.   

    where t1.dept=t2.dept and t1.name>=t2.name and t1.dept=t3.dept表t1,t2 通过dept 联结,当数据库检索出T1的全部记录,然后:
    将T3中符合t1.dept=t3.dept的记录检索出来,
    再将符合t1.dept=t2.dept and t1.name>=t2.name的检索出来
      这个比较:比如dept=1的记录,当t1.dept=1 and t1.name=a 时
      t2.dept=1, 同时根据t1.name>=t2.name,t2.name=a,sum(t2.sal)=100
      当t1.dept=1 and t1.name=b时,t2.name=a或者b ,sum(t2.sal)=100+300
      依次类推
    这里t3跟t2基本没关系