SQL Percentage of users falling in a specific range
SELECT 100.0 * SUM(birthyear between 1990 and 2000) /
               COUNT(*)  AS pct
    FROM ( SELECT userid, MAX(birthyear) AS birthyear
             FROM visitors GROUP BY userid ) AS x


Some notes:


SUM(boolean-expr) is a way to count how often it is TRUE.
between 1990 and 2000 includes 101 distinct years because BETWEEN is 'inclusive'.  Are you sure you wanted that?
COUNT(*) will count all the rows from the derived table (the subquery)
MAX is a kludge -- A visitor might put down different birthyears on different visits.
Whenever a subquery is used, it must have parentheses around it.
The 'composite' index INDEX(userid, birthyear) would help performance some.