对union的遍历运算

  • 话不多说直接上硬核

话不多说直接上硬核

下面展示一些 内联代码片

// 我们使用联合查询的时候,是为了将数据更好的组装在一起,具体不多做介绍,可以看代码内部的注释
// An highlighted block$m_operation = M('OperatingReports');$info = $m_operation->where($where)->field('statistics_time,shop_id, sum(pay_amount) as pay_amount, 0 as cost,0 as succ_payed_amount,0 as browse_nums,0 as qudao')->union(array('field'=>'statistics_time,shop_id,0 as pay_amount,sum(cost) as cost,sum(succ_payed_amount) as succ_payed_amount,sum(browse_nums) as browse_nums,1 as qudao','table'=>'wk_ztc','where'=>$where,'group'=>'statistics_time'))->union(array('field'=>'statistics_time,shop_id,0 as pay_amount,sum(cost) as cost,sum(succ_payed_amount) as succ_payed_amount,sum(browse_nums) as browse_nums,2 as qudao','table'=>'wk_zuanzhan','where'=>$where,'group'=>'statistics_time'))->union(array('field'=>'statistics_time,shop_id,0 as pay_amount,sum(cost) as cost,sum(succ_payed_amount) as succ_payed_amount,sum(browse_nums) as browse_nums,3 as qudao','table'=>'wk_super_recommend','where'=>$where,'group'=>'statistics_time'))->union(array('field'=>'statistics_time,shop_id,0 as pay_amount,sum(expend_amount) as cost,sum(confirm_sk_amount) as succ_payed_amount,sum(browse_nums) as browse_nums,4 as qudao','table'=>'wk_taobao_customer','where'=>$where,'group'=>'statistics_time'))->group('statistics_time')->select();
// 打印$info得到如下结果
[{"statistics_time": "2020-04-13","shop_id": "5","pay_amount": "1919.44","cost": "0.00","succ_payed_amount": "0.00","browse_nums": "0","qudao": "0"
}, {"statistics_time": "2020-04-14","shop_id": "5","pay_amount": "1412.00","cost": "0.00","succ_payed_amount": "0.00","browse_nums": "0","qudao": "0"
}, {"statistics_time": "2020-04-15","shop_id": "5","pay_amount": "6440.04","cost": "0.00","succ_payed_amount": "0.00","browse_nums": "0","qudao": "0"
}, {"statistics_time": "2020-04-16","shop_id": "5","pay_amount": "5780.00","cost": "0.00","succ_payed_amount": "0.00","browse_nums": "0","qudao": "0"
}, {"statistics_time": "2020-04-13","shop_id": "5","pay_amount": "0.00","cost": "462.30","succ_payed_amount": "1020.00","browse_nums": "83","qudao": "1"
}, {"statistics_time": "2020-04-14","shop_id": "5","pay_amount": "0.00","cost": "417.78","succ_payed_amount": "390.00","browse_nums": "77","qudao": "1"
}, {"statistics_time": "2020-04-15","shop_id": "5","pay_amount": "0.00","cost": "429.70","succ_payed_amount": "390.00","browse_nums": "82","qudao": "1"
}, {"statistics_time": "2020-04-16","shop_id": "5","pay_amount": "0.00","cost": "436.54","succ_payed_amount": "950.00","browse_nums": "75","qudao": "1"
}, {"statistics_time": "2020-04-13","shop_id": "5","pay_amount": "0.00","cost": "10.37","succ_payed_amount": "0.00","browse_nums": "7","qudao": "3"
}, {"statistics_time": "2020-04-14","shop_id": "5","pay_amount": "0.00","cost": "19.69","succ_payed_amount": "1.00","browse_nums": "12","qudao": "3"
}, {"statistics_time": "2020-04-15","shop_id": "5","pay_amount": "0.00","cost": "12.35","succ_payed_amount": "0.00","browse_nums": "9","qudao": "3"
}, {"statistics_time": "2020-04-16","shop_id": "5","pay_amount": "0.00","cost": "18.42","succ_payed_amount": "0.00","browse_nums": "13","qudao": "3"
}, {"statistics_time": "2020-04-13","shop_id": "5","pay_amount": "0.00","cost": "19.25","succ_payed_amount": "275.00","browse_nums": "0","qudao": "4"
}, {"statistics_time": "2020-04-14","shop_id": "5","pay_amount": "0.00","cost": "0.00","succ_payed_amount": "0.00","browse_nums": "0","qudao": "4"
}, {"statistics_time": "2020-04-15","shop_id": "5","pay_amount": "0.00","cost": "0.00","succ_payed_amount": "0.00","browse_nums": "1","qudao": "4"
}, {"statistics_time": "2020-04-16","shop_id": "5","pay_amount": "0.00","cost": "0.00","succ_payed_amount": "0.00","browse_nums": "36","qudao": "4"
}]
// 用一个新的空数组存放处理后的数据,根据统计日期把相同的字段进行求和运算,其他运算同理$data = [];foreach ($info as $k => $v){foreach ($info as $k2 => $v2){if ($v2['statistics_time'] == $v['statistics_time']){$data[$k]['statistics_time'] = $v2['statistics_time'];$data[$k]['pay_amount'] += $v2['pay_amount'];$data[$k]['cost'] += $v2['cost'];$data[$k]['succ_payed_amount'] += $v2['succ_payed_amount'];$data[$k]['browse_nums'] += $v2['browse_nums'];unset($info[$k2]);}}}//对求和后的数据再进行处理,例如求百分率什么的foreach ($data as $k => $v){$data[$k]['spread_ratio'] = $v['cost']/$v['pay_amount'];$data[$k]['invest_repay_rate'] = $v['succ_payed_amount']/$v['cost'];$data[$k]['ppc'] = $v['cost']/$v['browse_nums'];}return $data;
// 打印$data
{"statistics_time": "2020-04-13","pay_amount": 1919.44,"cost": 491.92,"succ_payed_amount": 1295,"browse_nums": 90,"spread_ratio": 0.25628308256575,"invest_repay_rate": 2.6325418767279,"ppc": 5.4657777777778},{"statistics_time": "2020-04-14","pay_amount": 1412,"cost": 437.47,"succ_payed_amount": 391,"browse_nums": 89,"spread_ratio": 0.30982294617564,"invest_repay_rate": 0.89377557318216,"ppc": 4.915393258427},{"statistics_time": "2020-04-15","pay_amount": 6440.04,"cost": 442.05,"succ_payed_amount": 390,"browse_nums": 92,"spread_ratio": 0.068640878006969,"invest_repay_rate": 0.88225313878521,"ppc": 4.8048913043478},{"statistics_time": "2020-04-16","pay_amount": 5780,"cost": 454.96,"succ_payed_amount": 950,"browse_nums": 124,"spread_ratio": 0.078712802768166,"invest_repay_rate": 2.088095656761,"ppc": 3.6690322580645}

对union的遍历运算相关推荐

  1. scau 18724 二叉树的遍历运算

    Description 二叉树的三种遍历都可以通过递归实现. 如果我们知道一棵二叉树的先序和中序序列,可以用递归的方法求后序遍历序列. 输入格式 两行,第一行一个字符串,表示树的先序遍历,第二行一个字 ...

  2. “后序遍历二叉运算树进行Lambda演算的化简”带来的联系

    今天闲来无事,想到一个自以为绝妙的想法,那就是用后序遍历二叉树Lambda演算的化简. 数据结构与算法中,我们想写个计算器就必须遇到一个问题,表达式求值!其实表达式很多就是我们所谓的现实生活中的问题解 ...

  3. 集合运算—union(并集)、intersect(交集)和except(差集)

    一.集合运算的基本格式是: 集合查询1 <集合运算> 集合查询2 [order by ...] 二.集合运算符是对两个集合操作的,两个集合必须具有相同的列数,列具有相同的数据类型(至少能隐 ...

  4. mysql和redis统计网站活跃度,最代码网站用户私信列表采用mysql union查询优化为Redis查询的经验和相关代码片段分享...

    由于用户和私信的数据量逐渐增加,查询用户和其他用户的私信合并排重排序的sql语法给mysql带来了很大的压力,springdata jpa的hql查询语法如下:select id from (sele ...

  5. 【学亮IT手记】oracle集合运算

    [学亮IT手记] oracle集合运算 union做并集运算: ①union集合运算的结果不包括去掉重复记录. ②union all集合运算的结果包括重复记录. intersect进行交集运算 min ...

  6. 第 22 期:有序遍历语法

    我们继续讨论遍历运算的语法规则. 序号的引用 SQL 延用了数学上的无序集合概念,遍历时也不关注次序.但计算机只能一步步地执行(暂先不考虑并行计算的情况),遍历集合时总会有个次序,充分利用这个次序就可 ...

  7. 二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)

    要求:以左右孩子表示法实现链式方式存储的二叉树(lson-rson),以菜单方式设计并完成功能任务:建立并存储树.输出前序遍历结果.输出中序遍历结果.输出后序遍历结果.交换左右子树.统计高度,其中对于 ...

  8. html递归遍历,图的深度遍历是一个递归过程

    数据结构问题:图的深度优先遍历中有递归的应用,数据结构问题:图的深度优先遍历中有递归的应用,要用到栈,图中顶点是首先你得明白函数调用本身就是通过栈来实现的. 调用函数是入栈,而函数返回是出栈. 为什么 ...

  9. mysql集合运算教程_详解SQL集合运算

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]06.透视.逆透视.分组集 [T ...

  10. pig连接oracle数据库,Pig安装讲解

    Pig 简介: Pig 是 Apache 项目的一个子项目,Pig 提供了一个支持大规模数据分析的平台,Pig 突出的特点就是它的结构经得起大量并行任务的检验,使得它能够处理大规模数据集 Pig  特 ...

最新文章

  1. kali2020安装中文输入法(切换中文输入法)
  2. 使用React.js开发自己的Chrome插件
  3. 同类型结构体之间赋值不一定有效
  4. Require.js
  5. React Native 0.59.0 发布,使用 React 编写原生应用
  6. 【报错解决】gcc编译运行c语言程序报警告warning: no newline at end of file
  7. python学籍管理系统 flask_taskday05-Python之flask学习 web开发最基本的需要(特别详细且适用)...
  8. 红黑树结构完整实现与详解
  9. android 开启dlna音乐服务_新品丨数字流媒体新宠——Stack Audio Link USB音乐播放器...
  10. 空格html怎么使用,HTML里空格应该如何使用
  11. 初始化中断按键(2440)
  12. SoundMorph Dust for Mac(双耳环绕音频颗粒合成仪)
  13. Android arm64-v8a、armeabi-v7a、armeabi、x86详解
  14. 户外大覆盖无线访问接入AP?
  15. 自制力的本质是什么?怎样才能变得自律?
  16. 维度探索:三维空间、四维空间和更高维度
  17. [Jquery]天气接口简单使用
  18. 2021年电赛 E题 数字传输
  19. error_code: 此条为不计费广告,正常投放请联
  20. 滑动验证+短信验证码接入=复制粘贴(Java)

热门文章

  1. 这7个素材网站送你参考,一部手机就可以做影视剪辑,0基础抖音涨粉
  2. 雷电模拟器安装frida
  3. 域管理电脑自动锁屏html,简单两步让windows实现关闭屏幕时自动锁定电脑
  4. 静态路由绑定探测组功能的配置
  5. termux自动启动ssh
  6. 放大电路中反馈及类型的判断
  7. 最新最全的阿里云产品手册出炉
  8. 段地址寄存器、偏移地址寄存器
  9. 用Excel做时间顺序的行为流程图
  10. 我所佩服的古人——乐毅