SELECT (@i :=@i + 1)生成序列号
转载自https://blog.csdn.net/qq_27922171/article/details/86477544
同类别自动生成序列号:https://bbs.csdn.net/topics/392035580?locationNum=3&fps=1
select
hou.time as '时间段'
,isu.accum_loan_contract_amt as '累计放款额度'
,round(isu.issue_cost_time / isu.issue_finish_cnt) as '放款流程用时'
from dim_hour hou
select
isu.loan_contract_amt
,isu.issue_finish_cnt
,coalesce(isu.issue_cost_time,0) as issue_cost_time
,case
when @time is null then @accum_loan_contract_amt:=isu.loan_contract_amt
else @accum_loan_contract_amt:=@accum_loan_contract_amt + isu.loan_contract_amt
end as accum_loan_contract_amt
,@time:=isu.time as time
from (select @time:=null, @accum_loan_contract_amt:=null)s,
(
select
hou.time
,sum(case when date(isu.loan_issue_time) = curdate() then isu.loan_contract_amt else 0 end) as loan_contract_amt
,count(case when date(coalesce(isu.loan_issue_time,isu.loan_issue_fail_time)) = curdate() then isu.split_order_id else null end) as issue_finish_cnt
,sum(case
when date(coalesce(isu.loan_issue_time,isu.loan_issue_fail_time)) = curdate()
then timestampdiff(second,isu.loan_issue_submit_time, coalesce(isu.loan_issue_time,isu.loan_issue_fail_time))
else null end) as issue_cost_time
from dim_hour hou
left join (
SELECT * from pl_performance_loan_apply_fact where date(coalesce(loan_issue_time,loan_issue_fail_time)) = curdate()
)isu on DATE_FORMAT(isu.loan_issue_time, '%H:%i:%s') >= hou.`time` and DATE_FORMAT(isu.loan_issue_time, '%H:%i:%s') < hou.due_time
join (select time from dim_hour where start_time <= DATE_FORMAT(now() , '%H:%i:%s') and DATE_FORMAT(now(), '%H:%i:%s') < end_time) dim on hou.time <= dim.time
group by hou.time
order by hou.time
)isu
)isu on isu.time = hou.time
;
FROM
(
SELECT tot.collect_user_name
, CASE WHEN TIMESTAMPDIFF(SECOND, par.`collect_time`, tot.`collect_time`) > 1800 THEN NULL ELSE TIMESTAMPDIFF(SECOND, par.`collect_time`, tot.`collect_time`) END AS collect_diff
FROM
(
SELECT tot.*, @collect_series:= @collect_series + 1 AS collect_series
SELECT collect_user_name, collect_time FROM pl_collect_call_info cat
ORDER BY collect_user_name, collect_time
) tot, ( SELECT @collect_series:=-1 )s
) tot
LEFT JOIN (
SELECT tot.*, @collect_series_2:= @collect_series_2 + 1 AS collect_series_2
SELECT collect_user_name, collect_time FROM pl_collect_call_info cat
ORDER BY collect_user_name, collect_time
) tot, ( SELECT @collect_series_2:=0 )s
) par ON tot.collect_series = par.collect_series_2 AND par.`collect_user_name` = tot.`collect_user_name`
WHERE par.collect_user_name IS NOT NULL
) tot
GROUP BY tot.collect_user_name
FROM
(
SELECT t.*,
CASE WHEN @partition_by = t.collect_user_name THEN @rownum := @rownum + 1
ELSE @rownum :=1
END AS NO,
@partition_by := t.collect_user_name AS partition_by
FROM (
SELECT collect_user_name, collect_time FROM pl_collect_call_info cat
WHERE date(cat.collect_time) = curdate()
#ORDER BY collect_user_name, collect_time
) t
INNER JOIN (SELECT @rownum :=0) r
ON 1=1
INNER JOIN (SELECT @partition_by :='') p
ON 1=1
ORDER BY t.collect_user_name, t.collect_time
)tb
;
sls.time as `时间段`
,case when sls.time > hou.time then null else sls.cust_cnt end as `分段注册人数`
,case when sls.time > hou.time then null else sls.accum_cust_cnt end as `累计注册人数`
from (
select
dtl.cust_cnt #as `分段注册人数`
,case
when @time is null then @accum_cust_cnt:=dtl.cust_cnt
else @accum_cust_cnt:=@accum_cust_cnt + dtl.cust_cnt end
as accum_cust_cnt #`累计注册人数`
,@time:=dtl.time as time #`时间段`
from (select @time:=null, @accum_cust_cnt:=null)s, (
select
hou.time
,count(distinct usb.user_id) as cust_cnt
from dim_hour hou
left join (
select usb.user_id,usb.regist_time from pl_customer_basic_info usb
where date(usb.regist_time) = curdate()
)usb on DATE_FORMAT(usb.regist_time, '%H:%i:%s') >= hou.`time` and DATE_FORMAT(usb.regist_time, '%H:%i:%s') < hou.due_time
group by hou.time
order by hou.time
)dtl
)sls
left join (
select * from dim_hour
where start_time <= DATE_FORMAT(now(), '%H:%i:%s')
and DATE_FORMAT(now(), '%H:%i:%s') < end_time
) hou on 1=1
;
,sls.merchant_no
,sls.time as period
,case when sls.time > hou.time then null else sls.cust_cnt end as rgs_cnt
,case when sls.time > hou.time then null else sls.accum_cust_cnt end as accum_rgs_cnt
from (
select dtl.time
,dtl.cust_cnt #as `分段注册人数`
,CASE
WHEN @merchant_no IS NULL THEN @accum_cust_cnt:=dtl.cust_cnt
WHEN @merchant_no != merchant_no2 THEN @accum_cust_cnt:=dtl.cust_cnt
ELSE @accum_cust_cnt:=@accum_cust_cnt + dtl.cust_cnt END
AS accum_cust_cnt #`累计注册人数`
,@merchant_no:=dtl.merchant_no2 as merchant_no #`时间段`
from (select @merchant_no:=null, @accum_cust_cnt:=null)s, (
select
hou.time,usb.merchant_no,usb.merchant_no2
,count(distinct usb.user_id) as cust_cnt
from dim_hour hou
left join (
select usb.user_id,usb.regist_time ,usb.merchant_no,usb.merchant_no as merchant_no2
from (select * from pl_customer_basic_info usb where date(usb.regist_time) = curdate()) usb
left join dim_company_app cpy on usb.merchant_no=cpy.merchant_no
)usb on DATE_FORMAT(usb.regist_time, '%H:%i:%s') >= hou.`time` and DATE_FORMAT(usb.regist_time, '%H:%i:%s') < hou.due_time
group by hou.time,usb.merchant_no,merchant_no2
order by usb.merchant_no,hou.time
)dtl
)sls
left join (
select * from dim_hour
where start_time <= DATE_FORMAT(now(), '%H:%i:%s')
and DATE_FORMAT(now(), '%H:%i:%s') < end_time
) hou on 1=1
left join dim_company_app cpy on sls.merchant_no=cpy.merchant_no
where sls.merchant_no is not null
order by merchant_no,period
;
hou.time as '时间段'
,isu.accum_loan_contract_amt as '累计放款额度'
,round(isu.issue_cost_time / isu.issue_finish_cnt) as '放款流程用时'
,round(isu.issue_cost_time_v2 / isu.issue_finish_cnt) as '放款流程用时v2'
from dim_hour hou
select
isu.loan_contract_amt
,isu.issue_finish_cnt
,coalesce(isu.issue_cost_time,0) as issue_cost_time
,case
when @time is null then @accum_loan_contract_amt:=isu.loan_contract_amt
else @accum_loan_contract_amt:=@accum_loan_contract_amt + isu.loan_contract_amt end
as accum_loan_contract_amt
,coalesce(isu.issue_cost_time_v2,0) as issue_cost_time_v2
,@time:=isu.time as time
from (select @time:=null, @accum_loan_contract_amt:=null)s, (
select
hou.time
,sum(case when date(isu.loan_issue_time) = curdate() then isu.loan_contract_amt else 0 end) as loan_contract_amt
,count(case when date(isu.loan_issue_submit_time) = curdate() then isu.split_order_id else null end) as issue_finish_cnt
,sum(case
when date(coalesce(isu.loan_issue_time,isu.loan_issue_fail_time)) = curdate()
then timestampdiff(second,isu.loan_issue_submit_time, coalesce(isu.loan_issue_time,isu.loan_issue_fail_time))
else null end) as issue_cost_time
,sum(case
when date(coalesce(isu.loan_issue_time,isu.loan_issue_fail_time)) = curdate()
then timestampdiff(second,isu.loan_issue_submit_time, coalesce(isu.loan_issue_time,isu.loan_issue_fail_time))
when date(isu.loan_issue_submit_time)= curdate() and isu.loan_issue_time is null and isu.loan_issue_fail_time is null
then timestampdiff(second,isu.loan_issue_submit_time, now())
else null end) as issue_cost_time_v2
from dim_hour hou
left join (
SELECT * from pl_performance_loan_apply_fact where date(coalesce(loan_issue_time,loan_issue_fail_time)) = curdate()
)isu on DATE_FORMAT(isu.loan_issue_time, '%H:%i:%s') >= hou.`time` and DATE_FORMAT(isu.loan_issue_time, '%H:%i:%s') < hou.due_time
join (select time from dim_hour where start_time <= DATE_FORMAT(now() , '%H:%i:%s') and DATE_FORMAT(now(), '%H:%i:%s') < end_time) dim on hou.time <= dim.time
group by hou.time
order by hou.time
)isu
)isu on isu.time = hou.time
,hou.time
,isu.loan_contract_amt
,isu.accum_loan_contract_amt
,isu.issue_cost_time
,isu.issue_cost_time_v2
,isu.issue_finish_cnt
from dim_hour hou
select
isu.loan_contract_amt
,isu.issue_finish_cnt
,coalesce(isu.issue_cost_time,0) as issue_cost_time
,case
WHEN @company IS NULL THEN @accum_loan_contract_amt:=isu.loan_contract_amt
WHEN @company != company2 THEN @accum_loan_contract_amt:=isu.loan_contract_amt
ELSE @accum_loan_contract_amt:=@accum_loan_contract_amt + isu.loan_contract_amt END
AS accum_loan_contract_amt
,coalesce(isu.issue_cost_time_v2,0) as issue_cost_time_v2
,@company:=isu.company2 as company
,isu.time
from (select @company:=null,@accum_loan_contract_amt:=null)s, (
select cpy.company,cpy.company as company2
,hou.time
,sum(case when date(isu.loan_issue_time) = curdate() then isu.loan_contract_amt else 0 end) as loan_contract_amt
,count(case when date(isu.loan_issue_submit_time) = curdate() then isu.split_order_id else null end) as issue_finish_cnt
,sum(case
when date(coalesce(isu.loan_issue_time,isu.loan_issue_fail_time)) = curdate()
then timestampdiff(second,isu.loan_issue_submit_time, coalesce(isu.loan_issue_time,isu.loan_issue_fail_time))
else null end) as issue_cost_time
,sum(case
when date(coalesce(isu.loan_issue_time,isu.loan_issue_fail_time)) = curdate()
then timestampdiff(second,isu.loan_issue_submit_time, coalesce(isu.loan_issue_time,isu.loan_issue_fail_time))
when date(isu.loan_issue_submit_time)= curdate() and isu.loan_issue_time is null and isu.loan_issue_fail_time is null
then timestampdiff(second,isu.loan_issue_submit_time, now())
else null end) as issue_cost_time_v2
from dim_hour hou
left join (
SELECT * from pl_performance_loan_apply_fact where date(coalesce(loan_issue_time,loan_issue_fail_time)) = curdate()
)isu on DATE_FORMAT(isu.loan_issue_time, '%H:%i:%s') >= hou.`time` and DATE_FORMAT(isu.loan_issue_time, '%H:%i:%s') < hou.due_time
join (select time from dim_hour where start_time <= DATE_FORMAT(now() , '%H:%i:%s') and DATE_FORMAT(now(), '%H:%i:%s') < end_time) dim on hou.time <= dim.time
join pl_customer_basic_info usb on isu.user_id=usb.user_id
join dim_company_app cpy on usb.merchant_no=cpy.merchant_no
group by cpy.company,hou.time
order by cpy.company,hou.time
)isu
)isu on isu.time = hou.time
SELECT (@i :=@i + 1)生成序列号的更多相关文章
- springMVC使用与生成序列号
springMVC使用与生成序列号 我是以springMVC的方式提供序列号 代码可以直接在项目中用 第一步:controller类 @Autowired private PkGenerator pk ...
- 利用ir.sequence自动生成序列号
利用ir.sequence自动生成序列号 什么是序列号 可以这么理解,我有一个产品序号,编码的前缀是SOP,后缀是0001~9999的序号,没生成一个产品就自动流水加一,序列号不会重复,odoo中的i ...
- SQL Server 怎样生成序列号(虚拟数字辅助表)
</pre><pre name="code" class="sql">--生成一个"序列" 或者说生成一个" ...
- Idea为类生成序列号(十一)
新建一个测试的实体类Gradle,实现java.io.Serializable接口,选择类名,按Alt+Enter键,出现的提示框中没有生成serialVersionUID的提示,这个需要设置之后才会 ...
- 使用Redis的INCR、Hsetnx、Hincrby的命令生成序列号
Redis INCR命令 用于由一个递增key的整数值.如果该key不存在,它被设置为0执行操作之前.如果key包含了错误类型的值或包含不能被表示为整数,字符串,则返回错误.该操作被限制为64位带符号 ...
- mysql查询结果自动生成序列号
- .NET平台开源项目速览(9)软件序列号生成组件SoftwareProtector介绍与使用
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下Software Protector序列号生成组件.今天就通过一篇简单的文章来预览一下其强大的功 ...
- 如何用JAVA生成注册序列号
原文:http://blog.csdn.net/eagleking012/article/details/7099900 平常我们都接触过软件注册,输入序列号.激活码.注册码.授权码:对于这些字符码到 ...
- 一个shell脚本给客户使用服务器生成一个序列号
#!/bin/bash interface=`ls /sys/class/net|grep en|awk 'NR==1{print}'` if [ ! -e /etc/adserver/.seq.in ...
随机推荐
- csp-s模拟测试10.1(b)X 国的军队,排列组合, 回文题解
题面:https://www.cnblogs.com/Juve/articles/11615883.html X 国的军队: 好像有O(T*N)的直接贪心做法 其实多带一个log的二分也可以过 先对所 ...
- 等差数列+随机数——cf1114E
先确定上界 然后用查询随机位置的数,求gcd作为公差即可 /* 给定一个size为n的打乱的等差数列 两个询问 ? i 询问第i个数的值 > x 询问大于的值是否存在 可以在30次内问出最大值 ...
- 洛谷P2526 【SHOI2001】小狗散步
原题传送门 题目背景 Grant喜欢带着他的小狗Pandog散步.Grant以一定的速度沿着固定路线走,该路线可能自交.Pandog喜欢游览沿途的景点,不过会在给定的N个点和主人相遇.小狗和主人同时从 ...
- lumen框架使用Elasticsearch详解
该博文是集合几个博客踩坑得来的,百度热搜前几篇都是缺胳膊少腿的,所以结合几篇博客实现了一遍. 一.lumen使用Elasticsearch 首先需要搭建好的elasticsearch环境: http: ...
- 新书《iOS应用逆向工程:分析与实战》
前无古人!小白福音!国内第一本iOS应用逆向工程类图书<iOS应用逆向工程:分析与实战>就要空降啦~! 你是否曾因应用上线的第一天即遭破解而无奈苦恼,想要加以防范,却又束手无策? 你是否曾 ...
- 分布式锁的Redis实现
当我们开始开发项目部署运行时,项目规模不大,只是在一个JVM实例中运行,对同一资源的并发访问用JDK自带的锁机制就可以解决资源同时访问的问题.而随着项目的不断发展,单体应用已经无法满足日益增长的访问需 ...
- base64,AES,RSA,SHA和MD5等加密方式(jdk)
import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import jav ...
- 2019-6-14-WPF-shows-that-some-windows-in-multithreading-will-be-locked-in-the-PenThreadWorker-constr...
title author date CreateTime categories WPF shows that some windows in multithreading will be locked ...
- [Hdu-5155] Harry And Magic Box[思维题+容斥,计数Dp]
Online Judge:Hdu5155 Label:思维题+容斥,计数Dp 题面: 题目描述 给定一个大小为\(N*M\)的神奇盒子,里面每行每列都至少有一个钻石,问可行的排列方案数.由于答案较大, ...
- leetcode 1071 Greatest Common Divisor of Strings
lc1071 Greatest Common Divisor of Strings 找两个字符串的最长公共子串 假设:str1.length > str2.length 因为是公共子串,所以st ...