google big queryでのSQLで、
グループ別の合計に対する比率を出す方法に悩んでおります。
(通常のsqlの回答でもうれしいです)
用意しているテーブルは以下です。

score_data
+--------+-------+------+
| userID | score |  age |
+--------+-------+------+
|    1   |   100 |   5  |
|    2   |   113 |   14 |
|    3   |   250 |   19 |
|    4   |   300 |   35 |
|    5   |   450 |   42 |
|   ...  |   ... |  ... |
+--------+-------+------+

age_group(例: age:0~20の人はage_group_id が1)
+--------------+-------+------+
| age_group_id | min   | max  |
+--------------+-------+------+
|       1      |     0 |   20 |
|       2      |    21 |   40 |
|       3      |    41 |   60 |
+--------------+-------+------+

score_range(例: score:0~100の人はrange_idが1)
+----------+----------------+------+------+
| range_id |      name      | min  |  max |
+----------+----------------+------+------+
|     1    |    bad luck    |    0 |  100 |
|     2    | uncertain luck |  101 |  200 |
|     3    |    fair luck   |  201 |  300 |
|     4    |    good luck   |  301 |  400 |
|     5    |    best luck   |  401 |  500 |
+----------+----------------+------+------+

欲しいテーブルは以下のような要素のテーブルです。

dist_data
+----------------+-------------+---------------+--------------+
|      name      |  user_count |  age_group_id |  ratio_in_ag |
+----------------+-------------+---------------+--------------+
|    bad luck    |          10 |             1 |           10 |
|    bad luck    |           0 |             2 |            0 |
|    bad luck    |          20 |             3 |           20 |
| uncertain luck |          20 |             1 |           20 |
| uncertain luck |           0 |             2 |            0 |
| uncertain luck |          10 |             3 |           10 |
|    fair luck   |          30 |             1 |           30 |
|    fair luck   |          70 |             2 |           70 |
|    fair luck   |          20 |             3 |           20 |
|    good luck   |          30 |             1 |           30 |
|    good luck   |          30 |             2 |           30 |
|    good luck   |          40 |             3 |           40 |
|    best luck   |          10 |             1 |           10 |
|    best luck   |           0 |             2 |            0 |
|    best luck   |          10 |             3 |           10 |
+----------------+-------------+---------------+--------------+

nameはscoreの範囲の名前、
age_group_idは、年齢の区分にあたるID、
user_countは、その年齢区分でnameのスコア範囲に所属するユーザ数
ratio_in_agは、同じage_group_idの全てのスコア範囲の合計人数に対するuser_countの割合
です。

(例: age_group_id:1のユーザが10人、そのうちname:bad luckのユーザが1人だとすると以下のような行になります)

+----------------+-------------+---------------+--------------+
|      name      |  user_count |  age_group_id |  ratio_in_ag |
+----------------+-------------+---------------+--------------+
|    bad luck    |           1 |             1 |           10 |
+----------------+-------------+---------------+--------------+

現在ratio_in_ag以外の値は以下のSQLで取得しています。

#standardSQL
SELECT 
    x.name, count(user_id) as user_count, age_group_id
FROM
    (
        SELECT 
            range_name, user_id, age_group_id
        FROM 
            dataset.score_data
        JOIN 
            dataset.age_group
        ON 
            score_data.age BETWEEN age_group.min AND age_group.max
        JOIN 
            dataset.score_range 
        ON score_data.score BETWEEN score_range.min AND score_range.max
    ) as c 
RIGHT JOIN 
    dataset.score_range as x 
ON 
    c.name = x.name
GROUP BY 
    name, age_group_id

GROUP BYしたage_group_id毎のuser_countが分かれば可能だと思うのですが、
どう求めればよいのか、お分かりになる方ご教授お願いいたします。