句子大全

句子大全 > 句子大全

一个SQL语句 反应高效率工作的例子

句子大全 2020-07-29 14:28:01
相关推荐

?? ?? ?? ??今天运营侧需要一个游戏消费数据,BOSS让我写个脚本帮忙查一查。拿到需求想了想,写了个复杂的SQL,将输出重定向了一下。算上导出到Excel整个过程不到10min,感觉棒棒哒

需求描述: ?? ?? ?? ?? ?? ?? ??需要2018 07 26日各个渠道新创角角色在2018 07 26到2018 08 02各天的消费数据,消费数据按天汇总。 已知条件: 1、表 cp new role 2018 中包含 新角色信息roleId,每个角色会标记渠道来源adId2、表 channel info 包含渠道信息,即adId的名称等3、表 cp recharge 2018 包含消费信息。

所有表名,字段名均为别名

于是有query sql:

use database1; select countdistinct tb1.roleId as payRoleCount,tb1.adId,tb2.name,lefttb3.createTime,10, sumtb3.orderMoney from cp new role 2018 as tb1 left join database2.channel info as tb2 on tb1.adId = tb2.id right join database1.cp recharge 2018 as tb3 on tb1.roleId = tb3.roleId and tb1.adId = tb3.adId ??where tb1.createTime = 2018 07 26 and tb1.createTime 2018 07 27 and tb3.createTime = 2018 07 26 and tb3.createTime = 2018 08 03 group by lefttb3.createTime,10,tb1.adId

思路说明:1、先将表cp new role 2018通过外键adId和表channel info右链接获取adId对应的名称。

即SQL: Select tb2.name??from??cp new role 2018 as tb1 left join database2.channel info as tb2 on tb1.adId = tb2.id

2、 将表cp new role 2018??2018 07 26日的roleId 和 消费表cp recharge 2018 2018 07 26日??到??2018 08 03日的roleId进行右链接

即SQL:Select sumtb3.orderMoney,??lefttb3.createTime,10 from??cp new role 2018 as tb1??right join database1.cp recharge 2018 where??on tb1.roleId = tb3.roleId??where tb1.createTime = 2018 07 26 and tb1.createTime 2018 07 27 and tb3.createTime = 2018 07 26 and tb3.createTime = 2018 08 03

3、已 日期(createTime)和渠道(adId)将结果分组聚合,由于时间原数据都是精确到秒,所以取做前缀10个字符即为当日日期

即SQL: ...??group by??lefttb3.createTime,10,tb1.adId

得到结果如图:

结果说明:获取2018 07 26的各个渠道adId的新角色在2018 07 26到2018 08 02各天的消费数据,按渠道和天汇总

然后用sql命令将结果输出重定向到txt中,最后将txt复制成excel

输出重定向命令如下:

mysql h127.0.0.1 uroot p123456 P3306 e "use database1; select countdistinct tb1.roleId as payRoleCount,tb1.adId,tb2.name,lefttb3.createTime,10,sumtb3.orderMoney from cp new role 2018 as tb1 left join database2.channel info as tb2 on tb1.adId = tb2.id right join database1.cp recharge 2018 as tb3 on tb1.roleId = tb3.roleId and tb1.adId = tb3.adId ??where tb1.createTime = 2018 07 26 and tb1.createTime 2018 07 27 and tb3.createTime = 2018 07 26 and tb3.createTime = 2018 08 03 group by lefttb3.createTime,10,tb1.adId" /data/file/temp mysql20180808.txt

将得到的txt文件直接复制到excel,即可得到需求方需要的excel版数据,如下图

原本1个小时的事情,几分钟搞定啦

点赞 1

阅读剩余内容
网友评论
相关内容
拓展阅读
最近更新