【问题标题】:sql query to calculate weighted pointssql查询计算加权点
【发布时间】:2013-10-22 02:03:03
【问题描述】:

我有一个数据库,用于存储等级为 a、b、c 的论坛帖子。我想为 a 级分配 3 分,为 b 级分配 2 分,为 c 级分配 1 分,并获得所有用户的总分。如果权重是偶数,我可以使用这个查询:

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

但是如何在一个查询中计算加权帖子?字段分别为 post_id、user_id、grade、post_content

【问题讨论】:

    标签: sql group-by weighted


    【解决方案1】:
    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;
    

    【讨论】:

    • 很好的查询。由于该列不存在,因此使用“点”时出现错误。在“then”工作后立即分配一个数字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    相关资源
    最近更新 更多