2013-07-19 2 views
1

Я, имеющий таблицу, как показано ниже ..Сумма за тот же идентификатор в каждой строке SQL

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. Пожалуйста помоги. Я попытался использовать CUBE, ROLLUP, GROUPING SETS в GROUP BY, но ничего не работает.

+1

Не могли бы вы разместить запрос/запросы, которые вы * сделали *, и результаты? – FrustratedWithFormsDesigner

ответ

5

Вы хотите использовать для этого аналитические функции. Это функция, которые используют over пункта:

select r_id, Marks, sum(Marks) over (partition by r_id) 
from t; 
+0

Если OP не знаком с аналитическими функциями: эти ссылки могут быть полезны: http://www.orafaq.com/node/55 и http://docs.oracle.com/cd/E11882_01/server.112/e26088/ functions004.htm – FrustratedWithFormsDesigner

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; 

Надеется, что это левый присоединиться запрос отвечает на ваш вопрос ,

Смежные вопросы