首页 > 解决方案 > SQL 通过替换计算总和

问题描述

所以我有这张表badges(有点像 STO 的)

| user_id |  grade  |
---------------------
|  1      |  bronze |
|  1      |  silver |
|  2      |  bronze |
|  1      |  gold   |
|  1      |  bronze |
|  3      |  gold   | 
|  1      |  gold   | 

我想计算 user 的徽章点总数id 1。每个bronze徽章都应该等于5, every silver- 50, gold- 200

所以最后我需要为这个样本获得 460。

标签: sql

解决方案


对于特定的 user_id:

select
  sum(case grade
    when 'bronze' then 5
    when 'silver' then 50
    when 'gold' then 200
    end
   )
from tablename
where user_id = 1

推荐阅读