Pregunta

I have a database that stores forum posts with a grade of a, b, c. I want to assign 3 points for grade a, 2 points for grade b and 1 point for grade c and get the total points for all users. If the weight is even, I can use this query:

select count(*), userId from table_post group by userId;

But how to count weighted posts in one query? The fields are post_id, user_id, grade, post_content

¿Fue útil?

Solución

SELECT A.USER_ID,SUM(NEW_POINTS)
FROM
(
SELECT USER_ID,
       CASE WHEN grade = 'a'
            THEN points=3
            WHEN grade = 'b'
            THEN points=2
            WHEN grade = 'c'
            THEN points=1
            END AS new_points
FROM table_post
) A   
GROUP BY A.USER_ID;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top