Skip to main content
Back to problems
#2377
Easy Database

Sort the olympic table

Database
79.4% acceptance
Mar 31, 2026
40
4

No description available.

Solution

Pandas
Time O(1)
Space O(1)
LeetCode
solution.pandas
# Table: Olympic
# 
# +---------------+---------+
# | Column Name   | Type    |
# +---------------+---------+
# | country       | varchar |
# | gold_medals   | int     |
# | silver_medals | int     |
# | bronze_medals | int     |
# +---------------+---------+
# In SQL, country is the primary key for this table.
# Each row in this table shows a country name and the number of gold, silver, and bronze medals it won in the Olympic games.
# 
#  
# 
# The Olympic table is sorted according to the following rules:
# 
# The country with more gold medals comes first.
# 
# If there is a tie in the gold medals, the country with more silver medals comes first.
# 
# If there is a tie in the silver medals, the country with more bronze medals comes first.
# 
# If there is a tie in the bronze medals, the countries with the tie are sorted in ascending order lexicographically.
# 
# Write a solution to sort the Olympic table.
# 
# The result format is shown in the following example.
#
# Example 1:
# Input:
# Olympic table:
# +-------------+-------------+---------------+---------------+
# | country     | gold_medals | silver_medals | bronze_medals |
# +-------------+-------------+---------------+---------------+
# | China       | 10          | 10            | 20            |
# | South Sudan | 0           | 0             | 1             |
# | USA         | 10          | 10            | 20            |
# | Israel      | 2           | 2             | 3             |
# | Egypt       | 2           | 2             | 2             |
# +-------------+-------------+---------------+---------------+
# Output:
# +-------------+-------------+---------------+---------------+
# | country     | gold_medals | silver_medals | bronze_medals |
# +-------------+-------------+---------------+---------------+
# | China       | 10          | 10            | 20            |
# | USA         | 10          | 10            | 20            |
# | Israel      | 2           | 2             | 3             |
# | Egypt       | 2           | 2             | 2             |
# | South Sudan | 0           | 0             | 1             |
# +-------------+-------------+---------------+---------------+
# Explanation:
# The tie between China and USA is broken by their lexicographical names. Since "China" is lexicographically smaller than "USA", it comes first.
# Israel comes before Egypt because it has more bronze medals.

import pandas as pd

def sort_table(olympic: pd.DataFrame) -> pd.DataFrame:
  return olympic.sort_values(
    ['gold_medals', 'silver_medals', 'bronze_medals', 'country'],
    ascending=[False, False, False, True]
  )