桌子:
| User_ID | Red | Blue | Green | Rating |
| a | 23 | 33 | 42 | 99 |
| a | 56 | 45 | 62 | 45 |
| a | 23 | 49 | 28 | 67 |
| b | 39 | 59 | 10 | 87 |
| b | 18 | 28 | 59 | 38 |
| b | 40 | 50 | 38 | 94 |
我想要获得的结果是 user_id 的不同行,具有红色、蓝色和绿色的加权平均值 - 基于评级列。
颜色 * 评级/(a 或 b 的评级总和)
//编辑
无法理解如何做到这一点。尝试了以下但这是徒劳的尝试
WITH
averages AS (
SELECT
User_ID,
SUM(rating) AS average
FROM
` project.dataset.table`
GROUP BY
1)
SELECT
averages.User_ID,
Red*(Rating/average),
Blue*(rating/average),
Green*(rating/average)
FROM
`project.dataset.table` a
LEFT JOIN
averages
ON
a.user_id = averages.user_id