Mysql 谷歌大查询

Mysql 谷歌大查询,mysql,google-bigquery,Mysql,Google Bigquery,假设有一个包含两个表的数据库,即Loans和Billpayment 对于贷款表,我有以下列: loanId, clientId(primary key), DisbursementDate, applicationDate, approvalDate, loanNumber, loanAmount, interestRate Billpayment表列包括: billId(primary), customerId(foreign), billAmount, payment_status[suc

假设有一个包含两个表的数据库,即Loans和Billpayment

对于贷款表,我有以下列:

loanId,
clientId(primary key),
DisbursementDate,
applicationDate,
approvalDate,
loanNumber,
loanAmount,
interestRate
Billpayment表列包括:

billId(primary),
customerId(foreign),
billAmount,
payment_status[success/fail],
billDate

如何获取2018年3月已付款的客户,并显示在2018年剩余几个月内至少支付过一次账单的客户的数量,除此之外,还显示账单付款客户是否在2018年内有贷款?

好的,让我们完成这项工作。我没有测试过这些,也没有对其进行适当的优化,但希望它能有所帮助

若要在2018年3月列出付款,假设我们不关心是否成功,请在以下位置执行以下操作:

select * from billpayment
where month(billDate) = 3 and year(billDate) = 2018
要将相关客户信息包含在上述内容中,请执行加入:

select * from billpayment
join loans on customerId = clientId
where month(billDate) = 3 and year(billDate) = 2018
要仅列出在2018年下一个月也进行了付款的客户,请再次加入衍生表:

select * from billpayment b
join loans l on b.customerId = l.clientId
join (select distinct b1.clientId as clientid1 from billpayment b1
      where year(b1.billdate) = 2018 and month(b1.billdate) <> 3) c
        on b.customerId = c.clientId1 
where month(b.billDate) = 3 and year(b.billDate) = 2018
若要在申请日期之前检查他们是否在2018年开始贷款,请在您的where条款中添加and:

select * from billpayment b
join loans l on b.customerId = l.clientId
join (select distinct b1.clientId as clientid1 from billpayment b1
      where year(b1.billdate) = 2018 and month(b1.billdate) <> 3) c
        on b.customerId = c.clientId1 
where month(b.billDate) = 3 and year(b.billDate) = 2018
and year(l.applicationDate) = 2018

Loan table的ClientId是billpayment table的CustomerId?这是我的假设,看不出还有什么其他的联系方式。是的..它是@SafiUllah