我已经完成了SQL查询,但没有做任何使用循环的程序编写,所以我在这里迷路了.我正在使用Oracle sql Developer.可以在sql或PL / sql中完成
我有一张类似这样的表:
- Person_ID score Name Game_ID
- 1 10 jack 1
- 1 20 jack 2
- 2 15 carl 1
- 2 3 carl 3
- 4 17 steve 1
我怎样才能遍历这张桌子,以便我可以获得所有比赛的球员总得分.结果将是这样的:
- Person_ID score Name
- 1 30 jack
- 2 18 carl
- 4 17 steve
另外还有额外的功劳如果我只想抓住说游戏1 2?
编辑:很抱歉没有清楚,但我确实需要循环,即使没有它可以完成.
发布后的解决方案
此过程列出给定game_id的分数.如果省略参数,所有游戏将被总结:
- create or replace procedure player_scores(i_game_id number default null) as
- begin
- for o in (select person_id,name,sum(score) score
- from games where game_id = nvl(i_game_id,game_id)
- group by person_id,name)
- loop
- dbms_output.put_line(o.person_id||' '||o.name||' '||o.score);
- end loop;
- end player_scores;
以前的方案:
你不需要那个程序,只需要简单的查询:
- select person_id,sum(score)
- from your_table
- where game_id in (1,2)
- group by person_id,name