3

我有如下表..

    r_Id     Marks
     1        25
     1        25   
     1        25
     2        30
     2        30  

现在我想要一个查询,其中应该计算每个 r_id 的标记总和,结果应该是

    r_Id  MARKS   Sum
     1      25    75   
     1      25    75
     1      25    75
     2      30    60 
     2      30    60

我需要在不使用 PL/SQL 的情况下在 oracle 中执行此操作。请帮忙。我尝试在 GROUP BY 中使用 CUBE、ROLLUP、GROUPING SETS,但没有任何效果。

4

3 回答 3

7

您想为此使用分析函数。这些是使用over子句的函数:

select r_id, Marks, sum(Marks) over (partition by r_id)
from t;
于 2013-07-19T14:22:26.467 回答
0

你可以这样做:

select table1.*, sums.mark_sum
from table1
inner join (
  select r_id, sum(marks) mark_sum
  from table1
  group by r_id ) sums
on  sums.r_id = table1.r_id

在 SQLFiddle 上:http ://sqlfiddle.com/#!4/5a935/2

于 2013-07-19T14:26:50.210 回答
0
select r_id,s.marks,t.p from table s
left join
(select r_id,sum(marks)p from table
group by r_id)t
on s.r_id=t.r_id
order by t.p asc;

希望这个左连接查询能回答您的问题。

于 2016-07-02T04:03:24.453 回答