排除影响特定值的用户 ID
Posted
技术标签:
【中文标题】排除影响特定值的用户 ID【英文标题】:Exclude User IDs which have ineracted which specific values 【发布时间】:2017-10-30 09:41:37 【问题描述】:如果用户与特定广告系列(在本例中为 Campaign_ID 4)交互,我需要排除用户 ID。
User_ID | Campaign_ID| Value1| Value 2, Value 3, etc.
--------|------------------------------------
| 1 | Campaign_1 | 1 | |
| 1 | Campaign_4 | 1 | |
| 2 | Campaign_1 | 1 | |
| 3 | Campaign_1 | 1 | |
| 3 | Campaign_2 | 1 | |
| 3 | Campaign_3 | 1 | |
| 4 | Campaign_1 | 1 | |
| 4 | Campaign_4 | 1 | |
| 5 | Campaign_3 | 1 | |
---------------------------------------------
我已尝试以下查询以排除所有以某种方式与 Campaign_ID 4 交互的 User_ID:
SELECT DISTINCT *
FROM Report_1
WHERE Campaign_ID IN ("1", "2", "3")
AND User_ID NOT IN (SELECT User_ID FROM Report_1 WHERE Campaign_ID IN ("4"))
但是,查询只删除了campaign_ID为4的行:
User_ID | Campaign_ID| Value1| Value 2, Value 3, etc.
--------|------------------------------------
| 1 | Campaign_1 | 1 | |
| 2 | Campaign_1 | 1 | |
| 3 | Campaign_1 | 1 | |
| 3 | Campaign_2 | 1 | |
| 3 | Campaign_3 | 1 | |
| 4 | Campaign_1 | 1 | |
| 5 | Campaign_3 | 1 | |
----------------------------------------------
我想看到的是,所有包含与 Campaign_ID 4 交互的 User_ID 的行都消失了(在本例中为 User_ID 1 和 4)。
User_ID | Campaign_ID| Value1| Value 2, Value 3, etc.
--------|------------------------------------
| 2 | Campaign_1 | 1 | |
| 3 | Campaign_1 | 1 | |
| 3 | Campaign_2 | 1 | |
| 3 | Campaign_3 | 1 | |
| 5 | Campaign_3 | 1 | |
---------------------------------------------
有没有办法设置一个查询来做到这一点?
谢谢!
@编辑:我在表中添加了另一列(实际表包含 30 个不同的列)
【问题讨论】:
我已经尝试过您的 SQL (Fiddle),它返回了您期望的结果。你能edit你的问题更好地展示你的问题吗? 您的 Campaign_ID 都不是 1、2、3 或 4。您根本不应该通过该查询获得任何行。 您的查询是无效的标准 SQL。您使用的是哪个DBMS 产品? 我将 BigQuery 与标准 SQL 方言一起使用。 【参考方案1】:如果您的 compaign_id 列的文本有 Campaign_1 表示 compaign_id 1 和 Campaign_2 表示 compaign_id 2 等,那么下面的查询将满足您的要求
SELECT DISTINCT *
FROM Report_1
WHERE User_ID NOT IN
(SELECT User_ID FROM Report_1 WHERE Campaign_ID = 'Campaign_4');
【讨论】:
以上是关于排除影响特定值的用户 ID的主要内容,如果未能解决你的问题,请参考以下文章