在查询中使用 SUM 检索非负值

Using SUM in a query to retrieve non negative values

我正在尝试使用 Yii 框架在查询中执行 SUM() 并以 'Yii' 方式 return 数据。

我有一个名为 'codes' 的 table,它具有以下结构(为清楚起见,我省略了所有不相关的列)

+--------+----------+-------------+
| user_id | points  | classroom_id|
+---------+---------+-------------+
|    2    |   10    |     219     |
|    2    |   30    |     219     |
|    2    |  -20    |     219     |
|    2    |  100    |     219     |
|    2    |  -50    |     219     |
+--------+---------+--------------+

目前我的查询如下:

SELECT user_id, points, SUM(points) AS current_points
FROM `codes`
WHERE classroom_id = 219
GROUP BY user_id;

我基本上需要将这个查询修改为return 'total_points'(这些都是没有减负分的分)

所以我希望: current_points - 70 total_points - 140

任何人都可以建议最好的方法吗?

使用符号函数过滤负值:

  SELECT user_id, points, SUM(GREATEST(SIGN(points),0) * points) AS current_points
    FROM `codes`
   WHERE classroom_id = 219
GROUP BY user_id;

选择:

SUM ( CASE WHEN points > 0 THEN points ELSE 0 END )