这些年写过的花式sql 第2句 统计用户返佣金排名
时间:2023-08-04 10:08:43来源:博客园


(相关资料图)

第2句 统计用户返佣金排名

继续欢迎批评指正建议 ^^

需求:

曾经的活动是购买订单返流量(日志在 flow_rebate_log),后来改成返佣金(日志在 money_rebate_log)。现在需要 按照用户返佣金额排名,如果不存在金额,则按 返流量 排名。其他需要列出的字段:username(用户名 连接 users表获得),用户返佣金额,用户返佣金的订单数,用户返流量数,用户返流量的订单数

SELECT r.*,u.username,       flow_order_num + money_order_num as order_num,flow_order_money + money_order_money as order_moneyfrom        (            (SELECT f.uid,rebate_flow,flow_order_num,rebate_money,money_order_num,f.money as flow_order_money,m.money as money_order_moneyfrom(SELECT sum(rebate_value) as rebate_flow,count(*) as flow_order_num,uid,money FROM `flow_rebate_log` group by uid) fleft join(SELECT sum(consume_money) as rebate_money,count(*) as money_order_num,uid,money FROM `money_rebate_log` group by uid) m on m.uid = f.uid)union(SELECT m.uid,rebate_flow,flow_order_num,rebate_money,money_order_num,f.money as flow_order_money,m.money as money_order_moneyfrom(SELECT sum(rebate_value) as rebate_flow,count(*) as flow_order_num,uid,money FROM `flow_rebate_log`  group by uid ) f  right join(SELECT sum(consume_money) as rebate_money,count(*) as money_order_num,uid,money FROM `money_rebate_log`  group by uid) m on m.uid = f.uid)        ) rleft join `users` uon u.id = r.uid

排序在php代码里,因为想利用 TP框架的分页功能返回给前端。

//$tb = "sql语句"; $list = Db::table("($tb) t")        ->order("rebate_money desc,rebate_value desc")        ->limit(50)        ->select();
解析:

因为有的用户 只出现在 flow_rebate_log,有的只出现在 money_rebate_log, 需要一个全连接。使得每条记录 同时 包含用户的返流量和返金额信息。 而mysql不支持full join,只能用一个trick : m (money_rebate_log) full join f(flow_rebate_log) 相当于

m left join funionm right join f

由于 f.uid 和 m.uid 连接后 可能会有一个值是空的,那我们要取 肯定有值的。所以先选取 有效列 再 union。值得注意的是 union 和 union all 是有一点区别的,union 是去重的,union all是全部保留的。这里 每个用户只对应一条记录。所以 union 就可以了。

知识点:

模拟“full join” 和 union

标签:

  • 上一篇文章: 多举措化解充电桩涨价
  • 下一篇文章: 最后一页
  • 最新
  • 这些年写过的花式sql 第2句 统计用户返佣金排名

    第2句统计用户返佣金排名继续欢迎批评指正建议^^ 需求:曾经的

  • 多举措化解充电桩涨价

    多举措化解充电桩涨价---近期,郑州、广州、上海、青岛、重庆等地电动

  • 湖北谷城交警持续开展夏季交通安全专项整治行动

    湖北谷城交警持续开展夏季交通安全专项整治行动---夏季行动开展以来,

  • 孙悟空简笔画怎么画(孙悟空简笔画怎么画又简单又好画)

    首先画出孙悟空头顶的金箍,金箍画好后,我们开始画孙悟空脸的轮廓,画出

  • 海河发生流域性大洪水,8条河流发生有实测资料以来最大洪水

    2023年8月2日,北京门头沟,永定河河水湍急。视觉中国图据水利部最新消

  • 青墨玉怎么鉴别真假

    要鉴别青墨玉的真假,可以从以下几个方面入手:1 外观:真青墨玉的颜色

  • 港股午评:指数回调 恒科指一度大跌3% 业绩利好落地新能源车重挫

    港股午评:8月2日港股上午盘三大指数迎来调整,恒生科技指数一度大跌3%

  • 新荷似锦 香酬远客——2023沈阳荷花旅游文化节暨新民市第二十二届荷花旅游文化节盛大开幕

    7月30日,2023沈阳荷花旅游文化节暨新民市第二十二届荷花旅游文化节在

  • 华润三九:7月24日投资者关系活动记录,Athena Capital、keystone Capital等多家机构参与

    2023年8月1日华润三九000999发布公告称公司于2023年7月24日投资者关系

  • 动物乐园上演“两虎相斗”

    7月30日,河南省沁阳市和生森林动物乐园,两只东北虎在“对峙”。河南

  • 三祥科技拟使用额度不超过6000万的部分闲置募集资金购买理财产品

    三祥科技拟使用额度不超过6000万的部分闲置募集资金购买理财产品,募投,

  • 早财经丨惠誉下调美国评级,耶伦:强烈反对;关于存量房贷利率,央行发声;全域停水部分停电!河北一地求助;中国团队:已合成磁悬浮LK-99晶体

    NO 1市场消息美股三大指数收盘涨跌不一,道指涨0 2%,纳指跌0 43%,标

  • ​酿巴蜀韵味 五粮液国风快闪酒吧“香”见大运会

    省卫生健康委主任、党组书记陈小春出席会议并讲话,副主任、党组成员龙

  • 赶进度、抓质量、保交付……一批安置房项目最新进展来了

    赶进度、抓质量、保交付……一批安置房项目最新进展来了,住宅,用房,安

  • 财政部、应急管理部紧急预拨1.1亿元资金 支持京津冀地区做好防汛救灾工作

    针对近期京津冀地区暴雨洪涝灾害,8月1日,财政部、应急管理部紧急预拨

  • lg空调价格表(lg空调价格)

    来为大家解答以上问题,lg空调价格表,lg空调价格很多人还不知道,现在

  • 旅游
    • 提前还房贷要注意些什么问题?一次性还清房贷注意事项有哪些?

    • 当前页面的脚本发生错误是怎么回事?当前页面的脚本发生错误解决步骤-当前看点

    • 会计事务所审计是做什么的_审计是做什么的

    • 新手司机的热血奥迪A5之梦