首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询活动前、活动中和活动后的数据

问SQL查询活动前、活动中和活动后的数据
EN

Stack Overflow用户
提问于 2019-09-13 21:48:55
回答 1查看 201关注 0票数 0

我有一些网站数据,显示每天对产品ID的印象和点击。该表还包含一个列,显示该产品当前是否包含在7天活动中。我想得到的印象和点击前7天,在(7天)和7天后的活动。

我目前拥有的数据如下所示:

代码语言:javascript
复制
|ID  |Date    |Campaign|type |imps|clicks|
|1001|20190101|No      |image|100 |1     |
|1001|20190102|Yes     |video|100 |5     |

它显示了每天的点击量和印象,每个ID和拆分到暗淡的活动和类型。

活动持续7天,其中活动列将在7天内从否切换为是。

我想要一个名为'campaign period‘的新栏目,它是在之前、期间或之后。

为了简单起见,我想在一个月+/- 7天内查看产品。

最后,我想按活动周期和类型分组,以计算CTR。

我目前拥有的代码是一个简单的group by和imps和点击的总和,但是我不知道如何在拆分之前/期间/之后进行:

代码语言:javascript
复制
SELECT 
 Campaign,
 type, 
 SUM(imps), 
 SUM(clicks)
FROM table
GROUP BY 
 Campaign, 
 type

最终结果应该如下所示:

代码语言:javascript
复制
|Campaign Period|Type |Imps|Clicks|
|Before         |Image|20  |2     |
|After          |Video|30  |5     |
...

我希望创建活动周期列

EN

回答 1

Stack Overflow用户

发布于 2019-09-13 22:30:47

您应该将其视为不同的查询,然后连接它们:

此查询将为您提供活动前的总天数

代码语言:javascript
复制
  SELECT Campaign, type,  SUM(imps),  SUM(clicks)
    FROM table
   WHERE Campaign='No'
     AND NOT EXISTS(SELECT id
                      FROM table AS t2
                     WHERE t2.Campaign='yes'
                       AND t2.type = table.type
                       AND t2.Date < table.Date
                   )
GROUP BY Id, type

此查询将为您提供活动中的总天数

代码语言:javascript
复制
  SELECT Campaign, type,  SUM(imps),  SUM(clicks)
    FROM table
   WHERE Campaign='Yes'
GROUP BY Id, type

此查询将为您提供活动结束后的总天数

代码语言:javascript
复制
  SELECT Campaign, type,  SUM(imps),  SUM(clicks)
    FROM table
   WHERE Campaign='No'
     AND NOT EXISTS(SELECT id
                      FROM table AS t2
                     WHERE t2.Campaign='yes'
                       AND t2.type = table.type
                       AND t2.Date > table.Date
                   )
GROUP BY Id, type

现在,只需将这三个查询连接起来,您就会得到预期的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57924892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档