group by 多个字段查询结果不对的问题

查询结果集查询限制条件
渠道每日来访数据各个渠道在各个日期的来访用户合计值,如同一客户在同一天来访多次,则计为最后一次来访的渠道
SELECT
  *,
  COUNT(channel_name) _count
FROM
  (SELECT
    P.id,
    P.`see_time`,
    P.`channel_name`,
    P.`customer_id`,
    P.`event_date`,
    P.`wx_mini_option_config_id`,
    P.`visit_register_id`,
    P.`event_point`,
    P.`hit_point_visit_register_contract`
  FROM
    channel_data_map P
    INNER JOIN
      (SELECT
        MAX(M.see_time) AS MAX_SEE_TIME,
        M.*
      FROM
        channel_data_map M
      WHERE M.`event_point` = '来访'
        AND (
          M.`event_date` BETWEEN '2019-12-24'
          AND '2019-12-27'
        )
        AND (
          M.`project_id` = '3bf62a5e5da5d'
        )
      GROUP BY M.event_date,
        M.customer_id) Q
      ON P.see_time = Q.MAX_SEE_TIME
  WHERE P.`event_point` = '来访'
    AND (
      P.`event_date` BETWEEN '2019-12-24'
      AND '2019-12-27'
    )
    AND (
      P.`project_id` = '3bf62a5e5da5d'
    )) Z
GROUP BY Z.channel_name;

朋友找我帮忙,刚开始采用内层的group by 查询,虽然查询出来了每一个客户每一天的唯一一条访问记录,但是因为mysql 分组的默认取值顺序无法指定,结果集并不对。因为 group by 的MAX(see_time)那条记录是
准确的,这样一来再次和未分组前的数据进行Inner Join,就是我们想要的结果集了.

新的一年第一篇博客,2020加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值