create view overdue_info(借阅人姓名,借阅人类别,书名,借出日期,应归还日期,逾期时长) as select name,type,bookname,borrow_date,due_date,datediff(curdate(),due_date) from borrow_info bi join borrowers b on bi.id = b.id join books bk on bi.bookid = bk.bookid where bi.return_date is null and curdate() > bi.due_date; 什么意思
时间: 2023-12-26 14:06:22 浏览: 24
这是一个 SQL 查询语句,它创建了一个名为 overdue_info 的视图。视图是根据查询语句返回的结果集创建的虚拟表。这个视图包含了以下几列信息:
- 借阅人姓名:从借阅信息表 borrow_info 中关联借阅人表 borrowers 取得。
- 借阅人类别:从借阅信息表 borrow_info 中关联借阅人表 borrowers 取得。
- 书名:从借阅信息表 borrow_info 中关联图书表 books 取得。
- 借出日期:从借阅信息表 borrow_info 中取得。
- 应归还日期:从借阅信息表 borrow_info 中取得。
- 逾期时长:使用函数 datediff 计算当前日期与应归还日期之间的天数差,如果当前日期大于应归还日期,说明已经逾期。
这个视图的目的是查询所有未归还且已经逾期的图书借阅信息,以便图书管理员及时催促借阅人归还图书并收取逾期罚款。
相关问题
select case when overdue_days > 0 then ‘逾期’ when overdue_days = 0 and remain_principal > 0 then ‘在贷’ end, count(distinct sso_id) as remain_cnt from ( (select * from p02.ods_fin_notify_sms_send_info where ( substring(business_batch_no, 1, 22) = 'SNO2023070417590292025' or substring(business_batch_no, 1, 22) = 'SNO2023052219260890070' ) and return_msg = '处理成功') as a left join ( select dayno, ssoid, overdue_days, remain_principal from p02.dwd_loan_user_loan_apply_all_d where dayno = 20230708 or dayno = 20230523 ) as b on substring(a.business_batch_no, -8) = b.dayno and a.sso_id = b.ssoid ) group by case when overdue_days > 0 then ‘逾期’ when overdue_days = 0 and remain_principal > 0 then ‘在贷’ end
以下是根据您提供的 SQL 查询语句进行的解释:
该查询语句是对两个子查询进行左连接,并根据条件进行筛选和计数。首先,子查询 a 从表 `p02.ods_fin_notify_sms_send_info` 中选择符合条件的记录,其中条件为 `business_batch_no` 的前22位等于 'SNO2023070417590292025' 或 'SNO2023052219260890070',并且 `return_msg` 等于 '处理成功'。然后,子查询 b 从表 `p02.dwd_loan_user_loan_apply_all_d` 中选择符合条件的记录,其中条件为 `dayno` 等于 20230708 或 20230523。
接下来,这两个子查询通过关联条件 `substring(a.business_batch_no, -8) = b.dayno and a.sso_id = b.ssoid` 进行左连接。
最后,根据 `overdue_days` 和 `remain_principal` 的值分类统计并计算独立的 `sso_id` 数量。当 `overdue_days > 0` 时,分类为 '逾期',当 `overdue_days = 0` 且 `remain_principal > 0` 时,分类为 '在贷'。
请注意,在 SQL 查询中使用的引号可能需要根据您的数据库系统进行适当调整。
sql建立相应的视图,给出借阅超期信息单
好的,根据您的要求,可以使用以下 SQL 语句建立一个名为“borrow_overdue_info”的视图,用于获取借阅超期信息单:
```sql
CREATE VIEW borrow_overdue_info AS
SELECT b.borrow_id, b.book_id, u.user_name, b.borrow_date, b.due_date, DATEDIFF(NOW(), b.due_date) AS overdue_days
FROM borrow b
JOIN user u ON b.user_id=u.user_id
WHERE b.return_date IS NULL AND NOW() > b.due_date;
```
该视图将显示如下信息:
- 借阅 ID(borrow_id)
- 图书 ID(book_id)
- 借阅者姓名(user_name)
- 借阅日期(borrow_date)
- 应还日期(due_date)
- 超期天数(overdue_days)
其中,超期天数是根据当前日期与应还日期之间的天数计算出来的。通过该视图,您可以方便地获取借阅超期信息,以便及时催促用户归还图书。