在查询中使用 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 )
我正在尝试使用 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 )