TT在努力 2022-11-05 17:02 采纳率: 82.4%
浏览 10
已结题

自链接算平均次日留存

select count(t2.date)/count(t1.date) from
(select distinct device_id,date from question_practice_detail) t1
left join
(select distinct device_id,date from question_practice_detail) t2
on t1.device_id = t2.device_id
and t2.date = date_add(t1.date,interval 1 day)
这个表格链接的逻辑是啥啊
为啥链接键后面加and就可以直接连date_add函数
不应该where t2.date = date_add(t1.date,interval 1 day) 吗

  • 写回答

2条回答 默认 最新

  • leaf_cq 2022-11-07 09:58
    关注

    1、表连接中ON中的条件与WHERE中的条件是有区别的,ON中的条件是在表关联时判定,WHERE中的条件是在表完成关联后进行数据筛选时判定(当然,可能不是所有数据库或所有情况都是这样的)
    2、左/右连接时,一定不要把ON中的条件放到WHERE中,这意味着不同的SQL逻辑(内连接则结果一样),这里在ON中增加:t2.date = date_add(t1.date,interval 1 day)这个条件,表明右表即 t2 的记录要在结果集中保留,必须同时满足ON中的两个条件才行;而如果将 t2.date = date_add(t1.date,interval 1 day) 放到WHERE中,你的写的左连接的语法,执行的则是内连接的结果,统计结果必然100%,因为t2.date为null的情况全部被过滤掉了……

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月17日
  • 已采纳回答 11月9日
  • 创建了问题 11月5日

悬赏问题

  • ¥25 关于##爬虫##的问题,如何解决?:
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误