You can do it in a separate screen like this.
You would store the rating to a user-specific column that only serves as a temporary storage on the second screenshot. Let’s call it “temporary rating”.
Force users to make a decision whether to “submit” or not. If they press submit you write that value to another column “permanent rating”, also a user-specific column. Serves only as a way to show the rating to the signed-in user later on.
Now for the average, it gets a bit complicated. You would need 2 columns to help here:
-
A total global rating column (number, normal column).
-
A total global raters (number, normal column).
On the submit action chain, after the set column to the “permanent user rating”, next actions would be incrementing the total global rating by the permanent user rating, then increment 1 in the total global raters.
Finally, the average would be a math column: Total global rating/Total global raters.