一条复杂SQL实现思路
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,1. 定义城市等级(city_rank)小于3且GMV大于6000或者城市等级大与3且GMV大于5000定义为高消费(gq)城市等级(city_rank)小于3且广告收入大于360或者城市等级大与3且
千家信息网最后更新 2025年01月21日一条复杂SQL实现思路
1. 定义
城市等级(city_rank)小于3且GMV大于6000或者城市等级大与3且GMV大于5000定义为高消费(gq)
城市等级(city_rank)小于3且广告收入大于360或者城市等级大与3且广告收入大于300定义为高收入(pq)
flow_rank: 0低流量 1中流量 2高流量
合作商跨多个城市,选择city_rank最小值为其city_rank,毛收入多城市取和,广告毛收入按合作商收取
2. 要求查询
GMV城市最高小于10000、总和小于30000、非首次合作、如GMV有量毛利大于0.02
高消费额、低收入、非高流量;低消费额、高收入、非高流量;低消费额、低收入、中流量;低消费额、低收入、低流量,且合作商gmv超过2000
3. 实现
select distinct tc.partner_id as partnerId, tc.contract_id as contractId, tc.contract_num as contractNum, tc.bd_id as bdId, tc.org_id as orgId, if(tc.org_scale='NULL','0',tc.org_scale) as orgScalefrom table tcjoin ( select tc.partner_id, case when min(city_rank)<=3 and avg(t.gmv)>=6000 then 1 when min(city_rank)>3 and avg(t.gmv)>=5000 then 1 else 0 end as gq, case when min(city_rank)<=3 and avg(t.gross_profit+t.advertisement_gross_profit)>=360 then 1 when min(city_rank)>3 and avg(t.gross_profit+t.advertisement_gross_profit)>=300 then 1 else 0 end as pq, max(tc.flow_rank) as fq, sum(t.gmv) as gmv from ( select partner_id,poi_id,min(city_rank) as city_rank, max(tc.flow_rank) as flow_rank, sum(is_old) as is_old from table tc where tc.partner_id>=#{start} and tc.partner_id<=#{end} group by partner_id,poi_id ) tc join ( select poi_id, sum(gmv) as gmv, sum(gross_profit) as gross_profit, avg(advertisement_gross_profit) as advertisement_gross_profit from table tc where tc.partner_id>=#{start} and tc.partner_id<=#{end} group by poi_id ) t on tc.poi_id=t.poi_id group by tc.partner_id having max(t.gmv)<10000 and sum(t.gmv)<30000 and sum(tc.is_old)>0 and case when sum(gmv)>0 then sum(gross_profit)/sum(gmv)>0.02 else 1=1 end) t2 on t.partner_id=tc.partner_idwhere]]>((t2.gq=1 and t2.pq=0 and fq!=2) or (t2.gq=0 and t2.pq=1 and fq!=2) or (t2.gq=0 and t2.pq=0 and fq=1) or (t2.gq=0 and t2.pq=0 and fq=0 and t2.gmv>2000))
4. 关键
4.1 t2
a) tc子查询计算流量、是否首次合作
b) t子查询计算毛利、毛收入
c) 计算合作商消费额、流量、收入类型,查询满足要求1的合作商
d) having子查询过滤,case子句限制毛利率
4.2 要求2
where过滤
5. 总结
大量使用了聚合计算、过滤,业务功能使用一条SQL实现
如果用代码实现类似的功能,复杂程度可以想象,每个聚合都会对应一大坨代码
流量
合作
城市
消费
收入
消费额
查询
等级
低收入
广告
毛利
毛收入
代码
功能
复杂
最小
最高
业务
关键
多个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云米科技互联网
河北软件开发平台哪个好
企业管理专业软件开发
相城区正规软件开发口碑推荐
迈特思创数据库入口
中蒙乳杆菌数据库
互联网掌阅科技
网络安全主持词开场白
网络安全的逆向是不是很难
cydia数据库 黄字
吉林社区党性体检软件开发
靖江自动化网络技术哪家好
小孩网络安全不得不说的事
网络安全 计算机二级
电脑服务器登录密码忘了怎么办
昆山专业性网络技术有哪些
酷威软件开发
javaee搭建服务器
河源无限软件开发价钱
互联网科技企服核心技术
多线程保障数据库数据完整
广州新力网络技术服务有限公司
有关近年来网络安全的数据
sci有什么数据库
软件开发这是哪种语言
关于教学和数据库的使用心得
凯狮网络技术有限公司
直接访问服务器资源的方法
违反网络安全管理制度的规定
第一批网络安全示范