SQL查询近3天未带来安装的点击对应的Click URL实现问题
SQL代码调整方案
原有代码存在几处逻辑和语法问题,调整方向如下:
- 字段名
CLICK URL包含空格,未加转义符,会触发语法错误 - 未限定近3天的点击数据范围,会返回历史所有未匹配到安装的点击,不符合需求
- 关联条件仅匹配
PARAMS_ADVERTISERID逻辑不成立,同一广告主下存在大量不同点击和安装,需要补充设备唯一标识(比如OAID、IMEI等,根据表结构实际字段调整)的匹配条件才能实现归因关联 date-time字段未指定所属表,存在歧义,且字段名包含特殊字符需要转义- 日期范围筛选逻辑有边界问题,若
date-time为datetime类型,CURRENT_DATE()默认对应当天0点,会丢失当天截止当前的安装数据
调整后参考代码:
SELECT `ANDROID_CLICKS`.`CLICK URL`, `ANDROID_CLICKS`.`PARAMS_ADVERTISERID` FROM `ANDROID_CLICKS` -- 先筛选近3天的点击,缩小数据范围 WHERE `ANDROID_CLICKS`.`click_time` BETWEEN CURRENT_DATE() - 3 AND CURRENT_DATE() + INTERVAL 1 DAY AND NOT EXISTS ( SELECT 1 FROM `ANDROID_INSTALL` WHERE -- 核心归因匹配:广告主ID+设备唯一标识,设备字段请替换为表中实际字段 `ANDROID_INSTALL`.`PARAMS_ADVERTISERID` = `ANDROID_CLICKS`.`PARAMS_ADVERTISERID` AND `ANDROID_INSTALL`.`device_id` = `ANDROID_CLICKS`.`device_id` -- 限定安装发生的时间在点击之后且属于近3天范围,避免无效匹配 AND `ANDROID_INSTALL`.`install_time` >= `ANDROID_CLICKS`.`click_time` AND `ANDROID_INSTALL`.`install_time` BETWEEN CURRENT_DATE() - 3 AND CURRENT_DATE() + INTERVAL 1 DAY )
注:请将代码中的
click_time、install_time、device_id替换为两张表中实际对应的点击时间、安装时间、设备唯一标识字段名,若使用的数据库不支持反引号转义,可替换为双引号或方括号。
内容的提问来源于stack exchange,提问作者lusco grossi
相关产品推荐
相关产品推荐

