I thought this could probably be considered a level 6 kyu, overall nice though, thanks.
just because of the comments i understood that won or lost can be bigger than 1. should be defined a little more clearly, unless it is part of the kata that it is so cryptic.
You should drop the expect($sql.upcase).to include("LEFT OUTER JOIN").or include("LEFT JOIN") test as the kata can be competed with any type of join (except INNER).
expect($sql.upcase).to include("LEFT OUTER JOIN").or include("LEFT JOIN")
Alternatively, you must add a note to the description, and (preferably) add this check to the sample tests.
There should be an edge case where the modifiedStrength is in range (39, 40) to disallow wrong solutions like this one.
I think the database design is a bit wonky. I think a better design might be separate tables for elements and Multiplers. Something like Elements(element_id, element_name and Multipliers(attacking_element, defending_element, multiplier). It was a bit unclear to me at first that the Multipliers table was only for pokemon attacking grass types (which works for this challenge, but, again, I don't think is a very well-designed structure).
Multipliers(attacking_element, defending_element, multiplier)