- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试对(几个)SQL 数据库中的现有数据负载进行一些转换分析。
数据结构本身非常简单。它只是一个 Actor 列表(比如 user_id)和他们所做的事情的名称。它看起来像这样(还有其他数据,但不会在此查询中使用):
CREATE TABLE views(
project_id integer not null,
name varchar(128) not null,
datetime timestamp not null,
actor varchar(256) not null
)
目标是标准转化分析内容。执行 Action A,然后执行 B、C、D、E 等的人数,以及步骤之间的平均时间。
为了清楚起见,漏斗步骤规定了顺序,但不规定排他性。例如,寻找名字 A、B、C 的漏斗应该包括一个序列为 B、A、B、D、C 的 Actor (因为其中包含 A,然后是 B,然后是 C,即使有之间的步骤)。
目前我正在使用以下内容查询此表(每个连接代表转换漏斗中的下一步):
SELECT count(actor), count(span2), avg(span2), count(span3), avg(span3), count(span4), avg(span4), count(span5), avg (span5)
FROM
(
SELECT e1.actor,
DATEDIFF(SECOND, MIN(e1.datetime), MIN(e2.datetime)) AS span2,
DATEDIFF(SECOND, MIN(e2.datetime), MIN(e3.datetime)) AS span3,
DATEDIFF(SECOND, MIN(e3.datetime), MIN(e4.datetime)) AS span4,
DATEDIFF(SECOND, MIN(e4.datetime), MIN(e5.datetime)) AS span5
FROM views AS e1
LEFT JOIN (SELECT actor, MIN(datetime) as datetime FROM views WHERE name = 'Action 2' group by actor) as e2 ON e1.actor = e2.actor AND e2.datetime > e1.datetime
LEFT JOIN (SELECT actor, MIN(datetime) as datetime FROM views WHERE name = 'Action 3' group by actor) as e3 ON e1.actor = e3.actor AND e3.datetime > e2.datetime
LEFT JOIN (SELECT actor, MIN(datetime) as datetime FROM views WHERE name = 'Action 4' group by actor) as e4 ON e1.actor = e4.actor AND e4.datetime > e3.datetime
LEFT JOIN (SELECT actor, MIN(datetime) as datetime FROM views WHERE name = 'Action 5' group by actor) as e5 ON e1.actor = e5.actor AND e5.datetime > e4.datetime
WHERE e1.project_id = 1 and e1.name = 'Action 1'
GROUP BY e1.actor
) AS aggregates
这在数据集上相当快(10M 行<1s)。问题是这实际上并不是正确的结果。子选定的连接每次都要求 MIN(datetime)。如果 Actor 序列按照 B、A、B 的顺序发生,则不会被计数,因为 MIN(A) 大于 MIN(B)。
给定一组执行了一系列 View 的 Actor ,我需要检查每个 Actor 是否执行了 View A,然后执行了 View B,然后执行了 View C,无论他们在执行过程中执行了任何步骤中间。 B、A、B、C 合格、A、B、B、C 合格、A、B、Z、C 合格、A、Z、C 不合格
要“正确”查询此内容,我可以删除子联接中的 MIN(datetime),并在联接外部执行 MIN()。然而,这需要非常长的时间,因为每个漏斗步骤的每行都会连接多次(步骤通常不按顺序重复)。在这种情况下,叉积是巨大的——查询规划器表示有 21 万亿行! (21,666,755,307,950,608)。这显然不再是 1 秒以下的查询。
我想要实现的是一个连接,其中连接发生在 MIN 值上,但 MIN 值是“MIN 值大于前一个连接步骤”。 IE。因此,对于步骤 A 到 B,B.datetime 是仍大于 A.datetime 的单个 MIN B.datetime。类似于(无效的 SQL!):
....
LEFT JOIN (SELECT actor, datetime FROM views WHERE name = 'Action 2') as e2
ON e1.actor = e2.actor AND e2.datetime > e1.datetime HAVING MIN(e.datetime)
....
关于如何实现这一目标有什么建议吗?
如果合适的话,特定于 MySQL 或 PostgreSQL 的函数都可以。
最佳答案
我建议只查看所有过渡时间。以下是如何在 SQL 中执行此操作:
SELECT prevName, name, count(*) as NumTransitions,
avg(DATEDIFF(SECOND, "datetime", prevdatetime))
FROM (SELECT e1.actor, "datetime", name,
lag(name) over (partition by actor order by "datetime") as prevName,
lag("datetime") over (partition by actor order by "datetime") as prevDateTime
FROM views AS e1
WHERE e1.project_id = 1
) t
GROUP BY prevName, name;
如果您想要每次转换的“ Actor ”数量,可以添加 count(distinct actor)
。
关于mysql - 使用 MIN() 连接,其中 MIN() 大于连接左侧的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21765409/
我正在使用这段代码: border-right:0px solid #ddd; height:85px; box-shadow :5px 5px 10px 1px #eaeaea; 但我刚刚得到
我遇到的问题是将文本放在图像的左侧... HTML 和 CSS h2, social-hand { font-family: 'PT Sans', sans-serif; display: i
美好的一天 我今天的 CSS 很糟糕。我有 3 列 div(水平,这就是我使用 float 的原因),但我想将我的文本居中对齐,但在包含列 div 的左侧。 HTML:
在我的应用程序中,我在截取屏幕截图时在我的 Imageview 中获得了透明像素。如何剪切顶部、左侧、右侧 和 Imageview 的底部。我尝试了下面的代码但没有工作 Bitmap bitmap =
如何在左侧的以下 LinearLayout 内部添加边框,使其宽度为 5dp 并适合 LinearLayout 的整个高度? LinearLayout 的高度是动态的,这意味着有时它可以是 50dp
我是第一次做网站。我在使用下拉菜单时遇到问题。它正在向左侧移动。请帮助我处理代码,使其位于导航菜单的正下方,并且将鼠标悬停在其上时应该可见。提前致谢。 这是我的 CSS 代码: ul { li
我对 html 和 css 有点生疏,我无法让 2 个图像 float ,一个在另一个之上。这是代码...   &nbs
我有一个固定宽度 (px) 的左侧边栏,右侧是我的主要内容。 这是我的演示:http://jsfiddle.net/fxWg7/4031/ 代码如下: 这是我的 html 代码: left co
所以我正在尝试做一个弹出式菜单,但我遇到了一点问题。 我已经申请了: .menu-side, .menu { -webkit-transition: left 0.2s ease; -
在下面的 CSS @media screen and (max-width: 750px) { .flexbox { display: block; } .menu ul {
@import 'https://fonts.googleapis.com/css?family=PT+Sans'; * { font-family: 'PT Sans', sans-serif
我想在我的标题旁边放一个图标。但它不合适..我怎样才能让它合适? My heading 最佳答案 使用vertical-align:middle,因此如果您更改文本或图像的大小,位
我正在使用参数方程围绕一个圆定位图像 ( How do I calculate a point on a circle’s circumference? ) 我使用简单的数学方法以更少的方式完成此操作
我想使用外部列表属性将 ul 列表正确定位在左浮动 img 的右侧,但元素符号未在图像右侧对齐,因为没有任何图像,但更多在左边。 Lorem ipsum dolor sit amet, c
我有一个layer-list.xml 现在我想在运行时更改 (top,right) 等项目的
我通过按:M-x linum-mode 来启用它们。如何将其“翻译”到 my.emacs 文件中,以便每次打开 EMACS 时自动启用它? 最佳答案 如果您希望每个缓冲区都使用它,请将 (global
我的Code : HTML 1 2 3 CSS #score { height:50px; } .myDiv { width:40px; height:40px;
我可以轻松设置 canvas.width 和 canvas.height 属性。我找不到正确的 JavaScript 语法来使用顶部和左侧设置 Canvas 的偏移量。我尝试过直接在 Canvas 上
我正在尝试为我正在编写的单人纸牌游戏完成条件游戏。 我把所有的 Action 和棋子都移除了。每一 block 都作为椭圆 UI 元素保存在一个二维数组中,当一 block 被拿走时,它会被替换为边框
我正在使用导航 View 修改 Android 应用程序。对于前几个菜单项,我给出了一个图标,但之后,我只给出了菜单标题。但是在导航面板中,没有图标的菜单项有一个空白区域。 如何删除空白区域?我希望菜
我是一名优秀的程序员,十分优秀!