Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions frontend/src/pages/leaderboard/components/RankingLists.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ interface RankingItem {
score: number;
user_name: string;
submission_id: number;
submission_count: number;
}

interface RankingsListProps {
Expand Down Expand Up @@ -181,13 +182,13 @@ export default function RankingsList({
{formatMicroseconds(item.score)}
</Typography>
</Grid>
<Grid size={isAdmin ? 2 : 3}>
<Grid size={isAdmin ? 1 : 3}>
<Typography sx={styles.delta}>
{item.prev_score > 0 &&
`+${formatMicroseconds(item.prev_score)}`}
</Typography>
</Grid>
<Grid size={3}>
<Grid size={isAdmin ? 2 : 3}>
<Typography>
<CodeDialog
code={codes.get(item?.submission_id)}
Expand All @@ -199,6 +200,13 @@ export default function RankingsList({
/>
</Typography>
</Grid>
{isAdmin && (
<Grid size={2}>
<Typography sx={styles.submissionId}>
Subs: {item.submission_count}
</Typography>
</Grid>
)}
{isAdmin && (
<Grid size={2}>
<Typography sx={styles.submissionId}>
Expand Down
14 changes: 13 additions & 1 deletion kernelboard/api/leaderboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,15 @@ def _get_query():
WHERE leaderboard_id = %(leaderboard_id)s
),

-- Total submission count per user per GPU type for this leaderboard.
submission_counts AS (
SELECT s.user_id, r.runner, COUNT(DISTINCT s.id) AS submission_count
FROM leaderboard.submission s
JOIN leaderboard.runs r ON r.submission_id = s.id
WHERE s.leaderboard_id = %(leaderboard_id)s
GROUP BY s.user_id, r.runner
),

-- All the runs on this leaderboard. For each user and GPU type, the
-- user's runs on that GPU type are ranked by score.
ranked_runs AS (
Expand All @@ -147,10 +156,12 @@ def _get_query():
s.submission_time AS submission_time,
s.file_name AS file_name,
r.submission_id AS submission_id,
COALESCE(sc.submission_count, 0) AS submission_count,
RANK() OVER (PARTITION BY r.runner, u.id ORDER BY r.score ASC) AS rank
FROM leaderboard.runs r
JOIN leaderboard.submission s ON r.submission_id = s.id
LEFT JOIN leaderboard.user_info u ON s.user_id = u.id
LEFT JOIN submission_counts sc ON s.user_id = sc.user_id AND r.runner = sc.runner
WHERE NOT r.secret AND r.score IS NOT NULL AND r.passed AND s.leaderboard_id = %(leaderboard_id)s
),

Expand All @@ -164,7 +175,8 @@ def _get_query():
'user_name', r.user_name,
'score', r.score,
'file_name', r.file_name,
'submission_id', r.submission_id
'submission_id', r.submission_id,
'submission_count', r.submission_count
)
ORDER BY r.score ASC
)
Expand Down
Loading