+---------------+---------+
|Column Name |Type|+---------------+---------+
| country | varchar || gold_medals | int || silver_medals | int || bronze_medals | int |+---------------+---------+
InSQL, country is the primarykeyfor this table.
Eachrowin 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.
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.
We need to implement the Olympic ranking system where countries are ranked by gold medals first, then silver, then bronze, and finally alphabetically by name for ties.
defsortOlympicTable(olympic_data):
"""
olympic_data: List of dictionaries with keys: country, gold_medals, silver_medals, bronze_medals
"""# Custom sorting key functiondefsort_key(row):
return (
-row['gold_medals'], # Negative for descending order-row['silver_medals'], # Negative for descending order-row['bronze_medals'], # Negative for descending order row['country'] # Positive for ascending order )
return sorted(olympic_data, key=sort_key)