- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
考虑表 Credits
CREATE TABLE `Credits` (
`UserID` int(11) unsigned NOT NULL DEFAULT '0',
`Amount` int(11) NOT NULL DEFAULT '0',
`Created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`Expire` datetime NOT NULL DEFAULT '9999-12-31 23:59:59'
)
有数据:
UserID Amount Created Expire
1 10 2016-01-14 2016-05-30
1 -2 2016-02-04 9999-12-31
1 3 2016-06-01 2016-09-30
没有Expiry处理,获取用户当前数量,简单select即可处理
SELECT SUM(Amount) FROM Credits WHERE UserID = 1;
现在,我需要写一个SELECT查询,输入参数为date,并且能够获取当时可用的信用额度,如下所示。
在..
仅使用上述架构是否可行?或者我需要添加额外的字段?
SQLFiddle:http://sqlfiddle.com/#!9/3a52b/3
最佳答案
当您进行负金额
的交易时,您应该找到相应的正金额
的交易并设置相同的到期日期。这样,您就可以存储所花费的积分的到期日期。您的示例表将如下所示:
UserID Amount Created Expire
1 10 2016-01-14 2016-05-30
1 -2 2016-02-04 2016-05-30
1 3 2016-06-01 2016-09-30
这使得查询任何特定日期的余额如下所示:
SELECT SUM(Amount) FROM Credits WHERE UserID = 1 and @date between Created and Expire;
请注意,您可能需要拆分一笔金额为负的交易,以涵盖到期日不同的信用额度。例如,您有下表:
UserID Amount Created Expire
1 10 2016-01-14 2016-05-30
1 10 2016-02-04 2016-06-30
而你想用Amount=-15
进行交易,那么你需要做两条记录:
UserID Amount Created Expire
1 -10 2016-04-26 2016-05-30
1 -5 2016-04-26 2016-06-30
要找出尚未花费或过期的信用及其到期日期,您可以使用以下查询:
select sum(Amount) as Amount, Expire
from Credits
where UserID = 1 and curdate() <= Expire
group by Expire
having sum(Amount) > 0
order by Expire
关于mysql - 处理交易表中的到期信用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36832146/
我正在尝试在 Azure Public 和 Azure Stack 上配置基础架构。为此,我已按照 official documentation for Ansible 的建议将凭据存储在 $HOME
在我的 POC 项目中,我们希望使用一个 AWS 用户账户(AWS api key 集 1)中的 S3 和其他 AWS 用户账户(AWS api key 集 2)中的 SQS? 我检查了下面的文章:
我在 GoDaddy 上有两个域,主域和附加域。我购买了 SSL 积分并想在附加域上激活 ssl,所以我在 CPanel 上使用了“使用 SSL 积分”按钮,但出现一条消息说“这通过加密用户数据使您的
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我是 CS50 和 C 的新手,目前正在完成第 1 周的作业“Credit”。我已经完成了大部分工作,但我遇到了一个问题,无论我觉得一个陈述应该多么真实,我的 if 比较都会将其标记为错误。我的逻辑是
我正在实现 PayPal Express Checkout,但在测试 PayPal Credit 作为付款方式时遇到了问题。当我选择它作为付款方式时,响应返回为 ERRORCODE0=10486,这意
1) 我正在尝试使用 Omnipay/Paypal 一段时间。我的问题是我收到“ACK = Success”,但在进入沙盒测试账户时,买卖双方都没有显示已预订的交易。 2) 我也感觉到并不是所有的 A
我在学习 Kotlin 语言时编写了以下代码。 class UserAdmin(credit: T) { init { println("Class with generics
我是一名优秀的程序员,十分优秀!