【问题标题】:Creating a column from an entry in a table从表中的条目创建列
【发布时间】:2019-03-05 15:22:10
【问题描述】:

我在弄清楚如何在列中输入条目时遇到了一些困难

event_name where match_id = 1

并将该条目应用于由visit_idpattern_id 分区的新列中的每条记录

这是我所拥有的:

| Visit_ID           | event_label  | product_list_name | event_name | match_id | pattern_id | SKU    |
|--------------------|--------------|-------------------|------------|----------|------------|--------|
| 154892456600012589 | California   | banner-101-s      | Search     | 1        | 1          | (null) |
| 154892456600012589 | sendData     | banner-101-s      | Impression | 2        | 1          | 10572  |
| 154892456600012589 | sendData     | banner-101-s      | Impression | 3        | 1          | 10573  |
| 154892456600012589 | sendData     | banner-101-s      | Impression | 4        | 1          | 10574  |
| 154892456600012589 | sendData     | banner-101-s      | Impression | 5        | 1          | 47589  |
| 154892456600012589 | sendData     | banner-101-s      | Impression | 6        | 1          | 84756  |
| 256493157982168884 | Nevada       | banner-109-s      | Search     | 1        | 2          | (null) |
| 256493157982168884 | sendData     | banner-109-s      | Impression | 2        | 2          | 58798  |
| 256493157982168884 | sendData     | banner-109-s      | Impression | 3        | 2          | 58799  |
| 256493157982168884 | sendData     | banner-109-s      | Impression | 4        | 2          | 10546  |
| 256493157982168884 | banner-109-s | banner-109-s      | Click      | 5        | 2          | 58798  |

我正在尝试获取以下内容:

| Search     | Product_List_Name | SKU   | Impressions | Clicks |
|------------|-------------------|-------|-------------|--------|
| California | banner-101-s      | 10572 | 1           | 0      |
| California | banner-101-s      | 10573 | 1           | 0      |
| California | banner-101-s      | 10574 | 1           | 0      |
| California | banner-101-s      | 47589 | 1           | 0      |
| California | banner-101-s      | 84756 | 1           | 0      |
| Nevada     | banner-109-s      | 58798 | 1           | 1      |
| Nevada     | banner-109-s      | 58799 | 1           | 0      |
| Nevada     | banner-109-s      | 10546 | 1           | 0      |

抱歉,如果我没有很好地解释!感谢您提供任何见解。

【问题讨论】:

  • 这是基于 SQL Server 或 MySQL 之类的 RDBMS 吗?
  • 是的,这是在 vertica 中
  • 另外,您的示例数据中一定有一些错误。所有Nevada 记录都有match_id = 1。这是正确的吗?
  • 是否支持 ANSI-SQL?
  • 糟糕,很抱歉——这绝对是不正确的。我现在就修。据我所知,它确实支持 ANSI-SQL。但我肯定更像是最终用户。

标签: sql google-analytics pattern-matching vertica web-analytics


【解决方案1】:

这可能与您要查找的内容接近:

SELECT t2.event_label AS Search, t1.product_list_name, t1.SKU,
       COUNT(CASE WHEN t1.event_name = 'Impression' THEN 1 END) AS Impression,
       COUNT(CASE WHEN t1.event_name = 'Click' THEN 1 END) AS Click
FROM mytable AS t1
INNER JOIN mytable AS t2 ON t1.Visit_ID = t2.Visit_ID AND t2.match_id = 1
WHERE t1.match_id > 1
GROUP BY t1.Visit_ID, t1.SKU, t2.event_label, t1.product_list_name

查询选择所有带有match_id <> 1 的记录,每一条记录都与对应的match_id = 1 记录相匹配。它使用条件聚合来计算Visit_IDSKUImpressionsClicks 的数量。

【讨论】:

  • 太棒了——非常感谢!我不得不将t1.pattern_id = t2.pattern_id 添加到内部连接条件中,以将搜索词限制为正确的产品列表名称,并且效果很好。非常感谢!!
  • @BiancaRodriguez 很高兴能帮到你。
【解决方案2】:

您的结果似乎来自这样的查询:

SELECT event_label as Search, product_list_name, SKU,
       SUM( (event_name = 'Impression')::int ) AS Impressions,
       SUM( (event_name = 'Click')::int ) AS Clicks
FROM t
WHERE SKU IS NOT NULL
GROUP BY vent_label, product_list_name, SKU;

您可能希望在GROUP BY 中包含pattern_id,但它不在结果集中,所以我不确定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 2015-07-14
    • 2022-10-17
    相关资源
    最近更新 更多