#1308
Medium Database Running total for different genders
Database
86.1% acceptance
Mar 31, 2026
225
70
No description available.
Solution
Pandas
Time O(1)
Space O(1)
# Table: Scores
#
# +---------------+---------+
# | Column Name | Type |
# +---------------+---------+
# | player_name | varchar |
# | gender | varchar |
# | day | date |
# | score_points | int |
# +---------------+---------+
# (gender, day) is the primary key (combination of columns with unique values) for this table.
# A competition is held between the female team and the male team.
# Each row of this table indicates that a player_name and with gender has scored score_point in someday.
# Gender is 'F' if the player is in the female team and 'M' if the player is in the male team.
#
#
#
# Write a solution to find the total score for each gender on each day.
#
# Return the result table ordered by gender and day in ascending order.
#
# The result format is in the following example.
#
# Example 1:
# Input:
# Scores table:
# +-------------+--------+------------+--------------+
# | player_name | gender | day | score_points |
# +-------------+--------+------------+--------------+
# | Aron | F | 2020-01-01 | 17 |
# | Alice | F | 2020-01-07 | 23 |
# | Bajrang | M | 2020-01-07 | 7 |
# | Khali | M | 2019-12-25 | 11 |
# | Slaman | M | 2019-12-30 | 13 |
# | Joe | M | 2019-12-31 | 3 |
# | Jose | M | 2019-12-18 | 2 |
# | Priya | F | 2019-12-31 | 23 |
# | Priyanka | F | 2019-12-30 | 17 |
# +-------------+--------+------------+--------------+
# Output:
# +--------+------------+-------+
# | gender | day | total |
# +--------+------------+-------+
# | F | 2019-12-30 | 17 |
# | F | 2019-12-31 | 40 |
# | F | 2020-01-01 | 57 |
# | F | 2020-01-07 | 80 |
# | M | 2019-12-18 | 2 |
# | M | 2019-12-25 | 13 |
# | M | 2019-12-30 | 26 |
# | M | 2019-12-31 | 29 |
# | M | 2020-01-07 | 36 |
# +--------+------------+-------+
# Explanation:
# For the female team:
# The first day is 2019-12-30, Priyanka scored 17 points and the total score for the team is 17.
# The second day is 2019-12-31, Priya scored 23 points and the total score for the team is 40.
# The third day is 2020-01-01, Aron scored 17 points and the total score for the team is 57.
# The fourth day is 2020-01-07, Alice scored 23 points and the total score for the team is 80.
#
# For the male team:
# The first day is 2019-12-18, Jose scored 2 points and the total score for the team is 2.
# The second day is 2019-12-25, Khali scored 11 points and the total score for the team is 13.
# The third day is 2019-12-30, Slaman scored 13 points and the total score for the team is 26.
# The fourth day is 2019-12-31, Joe scored 3 points and the total score for the team is 29.
# The fifth day is 2020-01-07, Bajrang scored 7 points and the total score for the team is 36.
import pandas as pd
def running_total(scores: pd.DataFrame) -> pd.DataFrame:
scores = scores.sort_values(['gender', 'day'])
scores['total'] = scores.groupby('gender')['score_points'].cumsum()
return scores[['gender', 'day', 'total']].sort_values(['gender', 'day'])