【Mysql】纯sql报表
生活随笔
收集整理的這篇文章主要介紹了
【Mysql】纯sql报表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【博客地址】:https://blog.csdn.net/sunyaowu315
【博客大綱地址】:https://blog.csdn.net/sunyaowu315/article/details/82905347
sql開發報表,制作視圖,是所有出表方式中最直接高效的方法之一,
考察一個小伙伴的sql能力,可以試著問下他能否利用純sql制作線上報表。
報表1:金融業務貸后-逾期表(即期)
代碼展示
SELECT DATE_FORMAT(a.endtime, '%Y-%m-%d') as '日期', TRUNCATE(sum(b.money),0) '正常應還$', TRUNCATE(sum(if(a.`status` != 2 or a.success_status = 3,b.money,0)),0)'首次逾期$', concat(TRUNCATE(sum(if(a.`status` != 2 or a.success_status = 3,b.money,0))/sum(b.money)*100, 2),'%') '首次逾期率$%', TRUNCATE(sum(if(a.`status` != 2,b.money,0)),0)'當前逾期$', concat(TRUNCATE(sum(if(a.`status` != 2,b.money,0))/sum(b.money)*100, 2),'%') '當前逾期率$%', count(a.apply_id) '正常應還#', sum(if(a.`status` != 2 or a.success_status = 3,1,0)) '首次逾期#', concat(TRUNCATE(sum(if(a.`status` != 2 or a.success_status = 3,1,0))/count(a.apply_id)*100, 2),'%') '首次逾期率#%', sum(if(a.`status` != 2,1,0)) '當前逾期#', concat(TRUNCATE(sum(if(a.`status` != 2,1,0))/count(a.apply_id)*100, 2),'%') '當前逾期率#%', concat(TRUNCATE(sum(if(l.count>1,b.money,0))/sum(b.money)*100, 2),'%') '續貸占比$% ' from app_repayment a left join app_A b on b.apply_id = a.apply_id left join app_B c on c.id = a.apply_id left join app_C d on d.id = c.user_id left join app_D e on e.id = d.channel_id left join (SELECT a.id user_id,count(b.id) count from app_A a left join app_B b on b.user_id =a.id group by a.id) l on l.user_id = d.id where a.endtime BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) and DATE_SUB(CURDATE(), INTERVAL -1 DAY) and e.channel = '渠道A' GROUP BY DATE_FORMAT(a.endtime, '%Y-%m-%d') desc limit 7結果展示
報表2:金融業務貸后-逾期表(遞延)
代碼展示
稍等片刻結果展示
總結
以上是生活随笔為你收集整理的【Mysql】纯sql报表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Mongodb】MongoDB
- 下一篇: 【Python】 Spyder