一条复杂SQL实现思路
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,1. 定义城市等级(city_rank)小于3且GMV大于6000或者城市等级大与3且GMV大于5000定义为高消费(gq)城市等级(city_rank)小于3且广告收入大于360或者城市等级大与3且
千家信息网最后更新 2024年11月26日一条复杂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安全错误
数据库的锁怎样保障安全
怎么打开网页数据库
博尔塔拉软件开发服务价格
软件开发团队需要多少资本
唯心网络技术有限公司
网络安全培训扬州
为什么选择路由器网络安全
北京智能软件开发报价
游戏辅助软件开发容易吗
网络技术好还是软件技术
武邑县网络安全培训学校
ug二次开发与数据库应用张博林
安徽工程大学数据库实验四
网络安全知识初中
软件开发必备技能
广州幼教软件开发有限公司
Goolge 服务器
软件开发帕累托图
网络安全考公务员是在做什么
腾讯服务器放在哪里贵州
搭建部署游戏源码的服务器配置
在线访谈网络安全
服务器配置与管理pdf
互联网 科技兴农
互联网与新兴科技即评万能句
游戏辅助软件开发容易吗
python数据库连接加密
两台服务器怎样设置网关
国家对初始数据库的政策
电影站服务器
文明重启千倍爆率的服务器