我有桌子如下..
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
我需要在oracle中执行此操作而不使用PL / SQL。请帮忙。 我尝试在GROUP BY中使用CUBE,ROLLUP,GROUPING SETS,但没有任何工作。
答案 0 :(得分:6)
您想要使用分析函数。这些是使用over
子句的函数:
select r_id, Marks, sum(Marks) over (partition by r_id)
from t;
答案 1 :(得分: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
答案 2 :(得分: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;
希望这个左连接查询回答你的问题。