我想为特定公司计算以下内容,即 13
:
- 总学分
- 已用积分
- 使用过的电话
我计算了 credit_amount(total credit
)的总和,它是 200+100+5000+100 = 5400
现在我想计算应该是这样的Used Credit
200 + 100 + 5000 + 70 = 5370
值 70
来了,因为它来自最后一个包
这是 credit_amount
100 - credit_remaining
30 = 70。
如您所见,recharge_date
如果该日期大于当前日期,则套餐有效。所以当前的事件包是我附上的上面截图中的第一个。
如何找到已使用的积分?
在同一场景中使用的总调用数..它将是
200 / 0.24 = 833.33
100 / 0.24 = 416.667
5000 / 0.20 = 25000
70 / 0.30 = 233.33
所以使用的调用
将是上面的总和,大约是26483.33
这是我的查询代码,它没有给出我需要的值:
SELECT (SELECT Sum(credit_amount)
FROM `company_credit`
WHERE `company_id` = 13) AS total_credit,
Sum(credit_amount / rate) AS used_calls,
Sum(credit_amount) AS used_credit
FROM `company_credit`
WHERE `company_id` = 13
AND recharge_date < Now()
ORDER BY `id` DESC
最佳答案
SELECT Sum(credit_amount) AS total_credit,
Sum(CASE WHEN recharge_date < Now() THEN (credit_amount / rate) ELSE ((credit_amount-credit_reamining) / rate) END ) AS total_sms,
Sum(CASE WHEN recharge_date < Now() THEN credit_amount ELSE (credit_amount-credit_reamining) END ) AS used_credit
FROM `company_credit`
WHERE `company_id` = 13
ORDER BY `id` DESC
此查询适用于 company_id = 13
。如果您为所有 company_id 计算相同的逻辑,只需删除 WHERE
条件并放置 GROUP BY company_id
。您将获得所有公司的计算记录。
尝试上面的查询。
在这里,我只是使用 CASE WHEN
来指定哪些记录有剩余信用。
使用该查询,您最终可以计算出您的 total_sms,used_credit,total_credit
。
关于php - sql查询获取符合条件的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45182041/