SELECT old.now_time, ROUND( ( new.count - old.count ) / old.count * 100, 2 ), new.count ncount, old.count ocount FROM ( SELECT sum( IF ( b.count > 1, 1, 1 ) ) count, b.now_time, b.tenant_code FROM ( SELECT date_format( ro.create_dt, '%Y-%m' ) AS now_time, a.tenant_code, a.order_no, count( a.id ) count FROM t_rep_order_timeout a INNER JOIN t_rep_order ro on a.tenant_code = ro.tenant_code and a.order_no = ro.order_no WHERE a.tenant_code = 'zlyy' GROUP BY date_format( ro.create_dt, '%Y-%m' ), a.tenant_code, a.order_no ) b GROUP BY b.now_time, b.tenant_code ) new LEFT JOIN (SELECT sum( IF ( b.count > 1, 1, 1 ) ) count, b.now_time, b.tenant_code FROM ( SELECT date_format( DATE_ADD( ro.create_dt, INTERVAL 1 YEAR ), '%Y-%m') AS now_time, a.tenant_code, a.order_no, count( a.id ) count FROM t_rep_order_timeout a INNER JOIN t_rep_order ro on a.tenant_code = ro.tenant_code and a.order_no = ro.order_no WHERE a.tenant_code = 'zlyy' GROUP BY date_format( DATE_ADD( ro.create_dt, INTERVAL 1 YEAR ), '%Y-%m'), a.tenant_code, a.order_no ) b GROUP BY b.now_time, b.tenant_code) old on old.tenant_code = new.tenant_code and old.now_time = new.now_time
SELECT old.now_time, ROUND( ( new.count - old.count ) / old.count * 100, 2 ), new.count ncount, old.count ocount FROM ( SELECT sum( IF ( b.count > 1, 1, 1 ) ) count, b.now_time, b.tenant_code FROM ( SELECT date_format( ro.create_dt, '%Y-%m' ) AS now_time, a.tenant_code, a.order_no, count( a.id ) count FROM t_rep_order_timeout a INNER JOIN t_rep_order ro on a.tenant_code = ro.tenant_code and a.order_no = ro.order_no WHERE a.tenant_code = 'zlyy' GROUP BY date_format( ro.create_dt, '%Y-%m' ), a.tenant_code, a.order_no ) b GROUP BY b.now_time, b.tenant_code ) new LEFT JOIN (SELECT sum( IF ( b.count > 1, 1, 1 ) ) count, b.now_time, b.tenant_code FROM ( SELECT date_format( DATE_ADD( ro.create_dt, INTERVAL 1 MONTH ), '%Y-%m') AS now_time, a.tenant_code, a.order_no, count( a.id ) count FROM t_rep_order_timeout a INNER JOIN t_rep_order ro on a.tenant_code = ro.tenant_code and a.order_no = ro.order_no WHERE a.tenant_code = 'zlyy' GROUP BY date_format( DATE_ADD( ro.create_dt, INTERVAL 1 MONTH ), '%Y-%m'), a.tenant_code, a.order_no ) b GROUP BY b.now_time, b.tenant_code) old on old.tenant_code = new.tenant_code and old.now_time = new.now_time
SELECT CASE WHEN length( mon ) = 1 THEN concat( '2019-0', mon ) ELSE concat( '2019-', mon ) END months FROM ( SELECT @m := @m + 1 mon FROM t_rep_order_timeout, ( SELECT @m := 0 ) a ) aa LIMIT 12
此處所用的輔助表t_rep_oder_timeot表數據必須超過12條面試
DELETE t FROM interview t LEFT JOIN ( SELECT title, min( id ) AS min_id FROM interview GROUP BY title ) t1 ON t.id = t1.min_id WHERE t1.min_id IS NULL;
歡迎搜索關注本人與朋友共同開發的微信面經小程序【大廠面試助手】和公衆號【微瞰技術】小程序