The gist
I'm implementing a website that hosts fitness competitions, and I need a good way to generate a "score" or "rank".
How the competitions work
Competitions consist of a team of one or more athletes/contestants from a given gym challenging the same number of contestants from one or more other gyms. There isn't any limit to the number of gyms that can enter the competition - there could potentially be over one hundred gyms that enter the competition. Points are assigned to each team based on various factors: time, reps, heaviest lift, etc.
Attributing a score to each team within a single competition is the easy part; things get a little more interesting when we try to generate a ranking for each gym based on their history of competitions. Intuitively, a team that places 1st amongst 10 other gyms in a competition should rank higher than a team that places 1st among 5 other gyms from a different competition.
I'm having trouble coming up with an intuitive, fair ranking mechanism. Any concrete ideas or suggestions on perhaps a family of ranking algorithms would be appreciated.