Daily/weekly/all-time leaderboards need separate sorted sets. Snapshot current leaderboard to historical at period end.
For historical queries, store periodic snapshots in cheaper storage (S3). Pre-compute percentiles. "Top %" queries: store player count, rank/ < .
Tie-breaking: secondary sort by earliest achievement time. Store as composite score: score * 1e9 + (MAX_TIME - timestamp).