我有一个表格:
------------------------
|id|p_id|desired|earned|
------------------------
|1 | 1 | 5 | 7 |
|2 | 1 | 15 | 0 |
|3 | 1 | 10 | 0 |
|4 | 2 | 2 | 3 |
|5 | 2 | 2 | 3 |
|6 | 2 | 2 | 3 |
------------------------
我需要进行一些计算,并尝试通过一个不是特别复杂的请求来完成,否则我知道该如何用多个请求进行计算。我需要得到以下所示的结果表格:
---------------------------------------------------------
|p_id|total_earned| AVG | Count | SUM |
| | | (desired)|(if earned != 0)|(desired)|
---------------------------------------------------------
| 1 | 7 | 10 | 1 | 30 |
| 2 | 9 | 2 | 3 | 6 |
---------------------------------------------------------
到目前为止,我已经构建了:
SELECT p_id, SUM(earned), AVG(desired), Sum(desired)
FROM table GROUP BY p_id
但我不知道如何在满足条件的情况下计算分组记录的数量。 我可以使用 HAVING
在单独的请求中获得此数字。
我几乎确定SQL应该具有这种功能。