In 2015, as a freshman at Rice, Gray appeared in 56 games, batting .247 with three home runs and 25 RBIs.[3] As a sophomore in 2016, he missed time at the beginning of the year due to injury, but returned to slash .295/.353/.462 with five home runs and 18 RBIs in 42 games.[4] After the 2015 and 2016 seasons, he played collegiate summer baseball in the Cape Cod Baseball League for the Falmouth Commodores, and was named a league all-star in 2016.[5][6][7] Gray broke out as a junior in 2017, hitting .313/.399/.540 with eight home runs and 39 RBIs in 47 games.
Gray did not play in a game in 2020 due to the cancellation of the minor league season because of the COVID-19 pandemic.[15] For the 2021 season, he was assigned to the Durham Bulls of the Triple-A East, slashing .246/.318/.428 with eight home runs and 33 RBI over 75 games.[16] He returned to Durham for the 2022 season.[17] Over 124 games, he batted .225 with 33 home runs and 89 RBI.[18]
To open the 2023 season, he was assigned to Durham.[19] In 127 games, Gray batted .234/.309/.482 with 28 home runs and a career–high 91 RBI.[20] On September 16, 2023, Gray was selected to the 40-man roster and promoted to the major leagues for the first time after Taylor Walls was placed on the paternity list.[21] In two games for the Rays, he went 2–for–5 (.400) with one home run and one RBI. Following the season on November 4, Gray was removed from the 40–man roster and sent outright to Triple–A Durham.[22] He elected free agency on November 6.[23]
Miami Marlins
On November 16, 2023, Gray signed a minor league contract with the Miami Marlins.[24] In 34 games for the Triple–A Jacksonville Jumbo Shrimp, he batted .227/.301/.523 with 10 home runs and 23 RBI. On May 12, 2024, the Marlins selected Gray's contract, adding him to their major league roster.[25] He went 0–for–7 in 7 games for Miami and was designated for assignment on August 26.[26]