Which DBMS? Each has its own proprietary ways of doing "top n" queries.
However, a generic (slower) SQL solution would be something like:
SELECT register.*, showrank.totalgainloss
FROM register
INNER JOIN showrank ON register.id = showrank.id
WHERE 3 >= (SELECT COUNT(DISTINCT totalgainloss) FROM showrank s2 WHERE s2.totalgainloss >= showrank.totalgainloss)
ORDER BY showrank.totalgainloss DESC ;"