考试报名
考试报名
考试内容
考试大纲
在线客服
返回顶部

备考刷题,请到

CDA认证小程序

某银行的数据分析师需要查询所有贷款客户的贷款金额,并希望同时获取该客户在贷款发放前一年的所有交易记录。贷款表loans包含loan_id、account_id、date(放款日期)、amount;交易表trans包含trans_id、account_id、date(交易日期)、trans_amount。分析师需要将两表关联,关联条件为account_id相等,且交易日期在放款日期前365天内。以下SQL写法中,能正确实现该需求的是?
A. SELECT * FROM loans l LEFT JOIN trans t ON l.account_id = t.account_id AND t.date BETWEEN l.date - 365 AND l.date - 1
B. SELECT * FROM loans l LEFT JOIN trans t ON l.account_id = t.account_id AND t.date BETWEEN DATE_SUB(l.date, INTERVAL 365 DAY) AND DATE_SUB(l.date, INTERVAL 1 DAY)
C. SELECT * FROM loans l LEFT JOIN trans t ON l.account_id = t.account_id WHERE t.date BETWEEN l.date - 365 AND l.date - 1
D. SELECT * FROM loans l, trans t WHERE l.account_id = t.account_id AND t.date BETWEEN DATE_ADD(l.date, INTERVAL -365 DAY) AND DATE_ADD(l.date, INTERVAL -1 DAY)
上一题
下一题
收藏
点赞
评论
题目解析
题目评论(0)

B正确:使用DATE_SUB函数计算放款前365天到前1天,且将条件放在ON中,确保左连接保留所有贷款记录。A错误:MySQL中l.date - 365对日期类型无效,会隐式转换为数字,结果错误。C错误:将日期条件放在WHERE中,会过滤掉无交易记录的贷款(左连接变成内连接效果)。D虽然逻辑正确,但使用逗号连接(隐式内连接),会丢失无交易记录的贷款。