【发布时间】:2019-03-31 13:38:56
【问题描述】:
我希望构建一个能够按月汇总分期付款值的 SQL 查询。通常这不会太难,因为您只需将分期付款值和group by 月份相加即可。然而,问题并不那么容易,在本文的其余部分中,我将说明原因并寻求人们能够提供的任何帮助。
首先要注意installments 列。其中installments 为 1,这意味着在购买时支付了总价值。其中installments 大于 1,这意味着在当月以及接下来的月份支付总价值。例如,如果我们看到transaction_id 9 和 10,这是一笔 100 美元的交易,分两期付款,这意味着 50 美元将在 2 月支付,50 美元将在 3 月支付。
假设我们想查看credit_card_id = 11111111 的每月账单。如果我们查看installments 列,我们可以看到正确的输出应该如下:
- 1 月:19.99 + 75.3
- 2 月:1337 + 75.3
- 三月:75.3
再次说明,3 月份的 75.3 发生是因为我们在一月份进行了 3 次分期付款交易,这意味着客户将在 1 月、2 月和 3 月被收取 75.3 的费用。问题是我不知道如何根据给定数据创建三月的类别。
首先,我在 SQL 中重新创建了表,并通过以下 SQLite 查询轻松地按月获取卡的所有交易
select strftime('%m', transaction_date) as Month, total_value, installment_value, installments
from transactions
WHERE credit_card_id = '11111111';
但是,如何将 3 个分期付款周期拆分为 01、02 和 03 并不明显,因此我创建了一个新表,其中包含 txn 列,该列旨在为唯一交易提供一个 ID,可以被认为是 1 组。
CREATE TABLE transactions (
transaction_id int primary key,
credit_card_id int,
transaction_date timestamp,
merchant_name varchar(256),
total_value decimal(19,4),
installment_value decimal(19,4),
installments int,
txn int
);
insert into transactions values(1,11111111,'2018-01-10T00:00:00','Colorful Soaps', 19.99, 19.99, 1, 1);
insert into transactions values(2,22222222,'2018-01-11T00:01:00','Cantina da Mamma',43.5,43.5,1,2);
insert into transactions values(3,33333333,'2018-01-12T01:02:00','Boulevard Hotel',129,129,1,3);
insert into transactions values(4,11111111,'2018-01-15T11:11:11','Micas Bar',225.9,75.3,3,4);
insert into transactions values(5,11111111,'2018-01-15T11:11:11','Micas Bar',225.9,75.3,3,4);
insert into transactions values(6,11111111,'2018-01-15T11:11:11','Micas Bar',225.9,75.3,3,4);
insert into transactions values(7,22222222,'2018-01-18T22:10:01','IPear Store',9999.99,9999.99,1,5);
insert into transactions values(8,11111111,'2018-02-20T21:08:32','Forrest Paintball',1337,1337,1,6);
insert into transactions values(9,44444444,'2018-02-22T00:05:30','Unicorn Costumes',100,50,2,7);
insert into transactions values(10,44444444,'2018-02-22T00:05:30','Unicorn Costumes',100,50,2,7);
我的问题是
- 是否可以在 SQLite 中获得我上面确定的格式的输出,如果可以,如何获得?
- 是否必须拥有
txn列才能获取此信息?
感谢您的帮助。
【问题讨论】:
标签: sql database sqlite aggregate-functions data-analysis