通过查询表结构,可以看到 date 列日期列不是日期类型: ? 将date 列改成 date 类型: ? 04. 构建模型和分析问题 1. 总体用户购物情况 pv(总访问量) ? 日均访问量 ?...用户行为转化漏斗 在购物环节中收藏和加入购物车两个环节没有先后之分,所以将这两个环节可以放在一起作为购物环节的一步。最终得到用户购物行为各环节转化率,如下: ? ? ?...基于时间维度了解用户的行为习惯 (1)一天中用户的活跃时段分布 ? ?...(3)对用户进行评分 对4330名有购买行为的用户按照排名进行分组,共划分为四组,对排在前四分之一的用户打4分,排在前四分之一到四分之二(即二分之一)的用户打3分,排在前四分之二到前四分之三的用户打2分...,剩余的用户打1分,按照这个规则分别对用户时间间隔排名打分和购买频率排名打分,最后把两个分数合并在一起作为该名用户的最终评分。
【字段解释】 访客id:进入店铺浏览宝贝的客户 浏览时间:访客进入店铺浏览页面的日期 浏览时常:访客进入店铺浏览页面的时长 现在需要知道店铺里每个访客和对应的浏览日期(每个访客同一天浏览多次算做一次记录...2)如果对表中多列字段进行去重,去重的过程就是将多字段作为整体去重,比如上面的例子,我们将访客id和浏览时间为整体去去重,而不是对访客id单独去重后再对姓名单独去重,所以会出现相同的访客id对应不同的浏览时间...,分组汇总后改变了表的行数,一行只有一个类别,这里使用group by后会将访客id 和浏览时间作为一个类别保留,重复的就会不显示。...by ) 根据题目要求得出每个访客和对应的浏览日期,我们对访客id ,浏览时间进行分组,对浏览时长(秒)进行排序。...淘宝日销售数据表; 查询结果: 窗口函数查询按照每个客户和浏览日期分组,如果同一天有几次浏览,会根据点赞数排序,筛选排名为1,即可得出每个访客和对应的浏览日期。
窗口函数形如: 表达式 OVER (PARTITION BY 分组字段 ORDER BY 排序字段) 有两个能力: 当表达式为 rank() dense_rank() row_number() 时,拥有分组排序能力...各分组排序函数的差异 我们将 rank() dense_rank() row_number() 的结果都打印出来: SELECT *, rank() over (PARTITION BY city ORDER...,按照 people 排序后进行了 累加(相同的值会合并在一起),这就是 BI 工具一般说的 RUNNGIN_SUM 的实现思路,当然一般我们排序规则使用绝对不会重复的日期,所以不会遇到第一个红框中合并计算的问题...我们看下面的例子: 按照地区分组后进行累加聚合,是对 GROUP BY 后的数据行粒度进行的,而不是之前的明细行。...总结 窗口函数在计算组内排序或累计 GVM 等场景非常有用,我们只要牢记两个知识点就行了: 分组排序要结合 PARTITION BY 才有意义。 累计聚合作用于查询结果行粒度,支持所有聚合函数。
为此,需要设置一个“投资日期”,并将这些股票标准化到同一个时间点,用线条显示百分比变化。可使用滑块调整参考日期。...整理时保持排序 这里我们需要了解产品在一个月和一年内的排名,然后显示排名随时间的变化。为此,我们创建一个凹凸图,其中以折线图形式显示随时间的变化。...可变时段的移动平均 您已使用 Tableau 中的快速表计算功能,计算了所有月份的销售额移动平均,但现在希望进行扩展,以便选择要计算多少个时段的平均值。...淡蓝色线条显示所有月份的销售额总和,而橙色线条显示 15 个时段的销售额移动平均。...,如何基于现有的 PowerBI 特点做出合理的设计也就给出了更多的方法。
在上面的代码中可以看出,是按照产品的类型去分组,在组内以价格的顺序升序排列,运行的结果如下。(rank的排序下面会单独说) ?...至于窗口函数与group by的区别: 两个order by的区别,第一个窗口函数中的order by只是决定着窗口里的数据的排序方式,第二个普通的order by决定查询出的数据以什么样的方式整体排序...作为窗口函数的聚合函数,常见的聚合函数有sum、avg、max、min跟count。他们跟窗口函数组合到一起,就会把聚合函数的功能和窗口函数组合在一起。 例二 代码及结果为 ? ?...窗口函数应用真题解析 1、topN问题或者组内排序问题 在实际的场景中,我们会经常会遇到排序或者排名问题,这个时候使用窗口函数会使问题变的简单。 求出每个课程的学生成绩排名: ?...1的等差数列; 第一步,先用row_number()函数排序,然后用登录日期减去排名,得到辅助列日期,如果辅助列日期是相同的话,证明用户是连续登录。
有些工具的可视化的点击操作做得更人性化,体验更好,更适合初级学习人员 ---- 示例2:带条件的分组 基于同一个数据表,我们改一下表样,稍微增加一些难度,根据日期字段中的年来分组,看看不同产品的操作上有什么变化...只考察最简单的情况是看不出这些区别的 ---- 示例3:再复杂一些的分组 还是基于这个数据表,我们做个一个格式再复杂一些的表样 按销售人员统计优质订单的情况,优质订单指:回款日期在订单日期30日内且单笔订单金额...D3:=count(C3\[A3\]{C3>$C3})+1,班级内排名 E3:=count(C3\[`0\]{C3>=$C3})+1,年级排名 F3:=ds2.select(zf,bj\==A3...,用隐藏格还能做出来,有些报表工具连这个都没有,只能自己在外部写代码实现了,工作效率会大受影响 ---- 示例5:找出指定时间内的大客户 从如下销售数据中: 取出指定时段的大客户。...工具的购买价格和开发效率要放在一起综合考虑才能得到总体的成本 比如大家可能都会想到使用不要钱的开源报表,购买价格为0,但开发效率太低(面对我国的复杂报表),结果总体成本却不低。
有些工具的可视化的点击操作做得更人性化,体验更好,更适合初级学习人员 示例 2:带条件的分组 基于同一个数据表,我们改一下表样,稍微增加一些难度,根据日期字段中的年来分组,看看不同产品的操作上有什么变化...只考察最简单的情况是看不出这些区别的 示例 3:再复杂一些的分组 还是基于这个数据表,我们做个一个格式再复杂一些的表样 按销售人员统计优质订单的情况,优质订单指:回款日期在订单日期 30 日内且单笔订单金额...也是我们考察的重点 我们继续用两个示例来看下更复杂的报表的开发效率如何考察 示例 4 侧重于考察报表工具函数的功能,看一些复杂计算场景中,是否有对应的高级函数来直接解决问题,示例 5 侧重于考察工具处理一些复杂的多步...D3:=count(C3[A3]{C3>$C3})+1,班级内排名 E3:=count(C3[`0]{C3>=$C3})+1,年级排名 F3:=ds2.select(zf,bj==A3 && studentid...工具的购买价格和开发效率要放在一起综合考虑才能得到总体的成本 比如大家可能都会想到使用不要钱的开源报表,购买价格为 0,但开发效率太低(面对我国的复杂报表),结果总体成本却不低。
HML列是完整HML价值因子在不同时间段的超额收益。全时段的1926-2015来看,该因子具有显著的正超额收益。但分时段来看,1926-1962和2002-2015两个时间段的超额收益并不显著。...从全时段来看,大盘部分的HML并不存在显著超额收益。...下图是高价值组合相对于中价值组合的期初溢价和期末溢价,并按上述公式将溢价变动分解为价格变动影响和财务变动影响两个部分。 ?...成功的基本面分析对价值投资的帮助 作者将B/M指标和账面价值的未来对数变动排名指标分成十等份,并使用Fama-MacBeth方法作回归分析。主要有以下结果: ?...我们把中国神奇公式指数和沪深300价值指数及沪深300指数放在一起对比: ?
1)curdate()函数:获取当前日期; 2)date_sub(指定日期,interval … day):获取指定日期…天之前的日期。...涉及到“每个”,要想到《猴子 从零学会SQL》里讲过的用“分组汇总”,按班级、学生分组(group by),汇总(分数求和sum) select 班级id,学生id, sum(分数) as 总分 from...条件筛选 题目中设定了两个查询条件: 条件一:班级排名 <= 10; 条件二:要求“半年内没有违纪记录的学生”-->通过排除“半年内有违纪记录的学生”进行过滤。...select 学生id,总分,班级排名,班级id from a5 where 班级排名 <= 10 and 学生id not in t1; 将子查询代入: select 学生id,总分,班级排名,班级...; 2)考查对分组函数group by的灵活使用; 3)考查对多表联结的了解,特别是灵活使用where条件进行数据过滤。
不同的管道操作符可以按任意顺序组合在一起使用,而且可以被重复任意多次。...这样做有两个好处:一是可以快速将不需要的文档过滤掉,以减少管道的工作量;二是如果在投射和分组之前执行"$match",查询可以使用索引。...分组(grouping)—> $group 如果选定了需要进行分组的字段,就可以将选定的字段传递给"$group"函数的"_id"字段。...在聚合中也是如此,因为它必须要先匹配到所有需要跳过的文档,然后再将这些文档丢弃。 拆分(unwind)—> $unwind 可以将数组中的每一个值拆分为单独的文档。 ...{"$mod" : [expr1, expr2]} 接受两个表达式,将第一个表达式除以第二个表达式得到的余数作为结果。 字符串表达式 适用于单个文档的运算。
基线是某个时段内生成的一组快照,按照统计学对这些快照进行了分组,以便获得一组随时间变化的基线值,可以以任何时段快照采样来做基线,只不过一般情况下我们大多会选择系统正常时段的快照来做基线。...使用基线模板安排基线的创建操作。 重命名基线。 设置基线的到期日期。...基线模板: 基线模板允许定义可能在将来要捕捉的基线,create_baseline_template 存储过程定义单一基线或重复基线的捕捉,创建单一基线模板与创建基于时间的基线类似,除了将来的时间外。...重复基线模板稍微有点不同,因为它需要调度信息,start_time 和 end_time 参数分别在模板激活和释放时定义,day_of_week、hour_in_day 和 duration 定义产生基线的日期...接下来使用 awrddrpt.sql 脚本来生成两个 AWR 的对比数据: ? ? ? 生成的 AWR 部分信息: ? ?
这些图表根据可视化目标的 7 个不同情景进行分组。 例如,如果要想象两个变量之间的关系,请查看“关联”部分下的图表。或者,如果您想要显示值如何随时间变化,请查看“变化”部分,依此类推。...这用于可视化 X 和 Y 之间的关系以及单独的 X 和 Y 的单变量分布。这种图经常用于探索性数据分析(EDA)。 7....连续变量的直方图(Histogram for Continuous Variable) 直方图显示给定变量的频率分布。下面的图表示基于类型变量对频率条进行分组,从而更好地了解连续变量和类型变量。...树状图(Dendrogram) 树形图基于给定的距离度量将相似的点组合在一起,并基于点的相似性将它们组织在树状链接中。 48....或者,您可以将第一个到主要组件用作 X 轴和 Y 轴。 49. 安德鲁斯曲线(Andrews Curve) 安德鲁斯曲线有助于可视化是否存在基于给定分组的数字特征的固有分组。
这些图表根据可视化目标的 7 个不同情景进行分组。例如,如果要想象两个变量之间的关系,请查看“关联”部分下的图表。或者,如果您想要显示值如何随时间变化,请查看“变化”部分,依此类推。 ?...这用于可视化 X 和 Y 之间的关系以及单独的 X 和 Y 的单变量分布。这种图经常用于探索性数据分析(EDA)。 ? 7....连续变量的直方图(Histogram for Continuous Variable) 直方图显示给定变量的频率分布。下面的图表示基于类型变量对频率条进行分组,从而更好地了解连续变量和类型变量。 ?...树状图(Dendrogram) 树形图基于给定的距离度量将相似的点组合在一起,并基于点的相似性将它们组织在树状链接中。 ? 48....或者,您可以将第一个到主要组件用作 X 轴和 Y 轴。 ? 49. 安德鲁斯曲线(Andrews Curve) 安德鲁斯曲线有助于可视化是否存在基于给定分组的数字特征的固有分组。
这些图表根据可视化目标的 7 个不同情景进行分组。例如,如果要想象两个变量之间的关系,请查看“关联”部分下的图表。或者,如果您想要显示值如何随时间变化,请查看“变化”部分,依此类推。...这用于可视化 X 和 Y 之间的关系以及单独的 X 和 Y 的单变量分布。这种图经常用于探索性数据分析(EDA)。 7....连续变量的直方图(Histogram for Continuous Variable) 直方图显示给定变量的频率分布。下面的图表示基于类型变量对频率条进行分组,从而更好地了解连续变量和类型变量。...树状图(Dendrogram) 树形图基于给定的距离度量将相似的点组合在一起,并基于点的相似性将它们组织在树状链接中。 48....或者,您可以将第一个到主要组件用作 X 轴和 Y 轴。 49. 安德鲁斯曲线(Andrews Curve) 安德鲁斯曲线有助于可视化是否存在基于给定分组的数字特征的固有分组。
在得到不同会员的RFM之后,根据步骤⑤产生的两种结果有两种应用思路 思路2:基于RFM的汇总得分评估所有会员的价值度价值,并可以做价值度排名。...案例背景介绍 用户价值细分是了解用户价值度的重要途径,针对交易数据分析的常用模型是RFM模型 业务对RFM的结果要求 对用户做分组 将每个组的用户特征概括和总结出来,便于后续精细化运营不同的客户群体,...汇总所有数据 汇总所有数据: 将4年的数据使用pd.concat方法合并为一个完整的dataframe data_merge,后续的所有计算都能基于同一个dataframe进行,而不用写循环代码段对每个年份的数据单独计算...3列使用astype方法将数值型转换为字符串型 然后使用pandas的字符串处理库str中的cat方法做字符串合并,该方法可以将右侧的数据合并到左侧 再连续使用两个str.cat方法得到总的R、F、M字符串组合...第1行代码使用数据框的groupby以rfm_group和year为联合对象,以会员ID会为计算维度做计数,得到每个RFM分组、年份下的会员数量 第2行代码对结果列重命名 第3行代码将rfm分组列转换为
开心一刻 今天儿子跟老婆聊天 儿子:妈妈,我为什么没有两个爸爸呀 老婆:每个人都只有一个爸爸呀,你看谁有两个爸爸了 儿子一脸真诚的看着老婆:那你为什么就有两个爸爸呢 老婆一脸疑惑的望向儿子...等等 2、能够作为窗口函数的聚合函数,如: SUM 、 AVG 、 COUNT 、 MAX 、 MIN 后续的案例演示我们基于 MySQL8.0.30 ,初始表 tbl_ware 及数据如下...OLAP 专用函数,通过函数名很容易看出其 OLAP 的用途 RANK 从名字可知,该函数用来排名、排序 1、假设我们对 tbl_ware 按售价从高到低进行排名, SQL 该如何写 相信大家很容易就写出来了...,然后组内按售价从高到低进行排名, SQL 又该如何写 有小伙伴一看到分组二字,第一反应肯定想到了 GROUP BY ,不只是你们,我也是一样的 但 GROUP BY 往往结合 聚合函数 使用,...并不是一个单独的汇总值,而是逐行汇总,是不是有点意思?
“登出日志”和“登录日志”字段数和字段含义一致,因此将“登出日志”和“登录日志”纵向联结可以使用union all子句。...对每个玩家按时间排序即是分组排序,使用排序窗口函数即可实现。即:以角色id进行分组(partition by 角色id),以时间进行排序(order by 时间),获取每个玩家下的每个时间的排名。...where 日期 = '2022-08-13') as a; 查询结果如下: 将上述查询结果设为临时表b,从该临时表中筛选出排名为1(where 排名 = 1)的数据即可得到玩家的停留等级信息。...SQL的书写方法: select * from b where 排名 = 1; 将临时表b的具体SQL语句带入,完整的SQL的书写方法: select * from (select *,rank() over...计算各等级停留的角色数分为两步: 第一步,对各停留的角色等级进行分组; 第二步,分组后,计算各等级的角色数。
分组列为两列时的效果 分组序号 分组序号函数特点,在分组内的记录数中,每一行返回从1开始的不重复的递增的序列,基于排序列定义的顺序,分组列,排序列可以为多列,当排序规则下的排序列相同,将从上往下填充递增序号...多个分组列下的单个排序列效果 分组排名 类似以上的分组序号,返回递增的序列值,但此处对重复的值有相同的排名 同时对重复值排名区分了美式排名和中式排名两种 ?...分组排名效果 分组求和 结果类似SUMIF和SUMIFS函数的求和效果,因采用一次计算多值返回的手段,效率性能对大数据量有极大的提升 ? 类似SUMIF的单组求和效果 ?...、命名、排序、工作表目录) 第31波-数量金额分组凑数功能,财务表哥表姐最爱 第32波-空行空列批量插入和删除 第33波-报表形式数据结构转标准数据源 第34波-提取中国身份证信息、农历日期转换相关功能...Excel插件,插件将持续性地更新,更新的周期视本人的时间而定争取一周能够上线一个大功能模块。
日期、时间计算 1)months_between(end, start) 返回两个日期之间的月数。...-- 2020-12-02 select date_add("2020-12-01", 1); 6)datediff(endDate, startDate) 两个日期相差的天数 -- 3 select...6. rank 对组中的数据进行排名,如果名次相同,则排名也相同,但是下一个名次的排名序号会出现不连续。比如查找具体条件的topN行。RANK() 排序为 (1,2,2,4)。...而下一个排名的序号与上一个排名序号是连续的。 DENSE_RANK() 排序为 (1,2,2,3)。 8....NTILE NTILE(n),用于将分组数据按照顺序切分成n片,返回当前切片值。
# 转换日期类型 df['time'] = pd.to_datetime(df['time']) 原数据的time只有时分秒,没有年月日,因此转换后的年月日默认使用了当前日期。...经过观察后,我们可以这样做去重的处理: 如果status全部相同,那么任意选一个,比如选第一个 如果status不同,那么基于少数服从多数原则,从多个值里选择一个。...和time组合都对应着stat_cnt和stat_sum两个特征,根据两个特征值的不同组合就可以判断重复的不同情况了(如图)。...将状态差值为1(上车)和 -1(下车)筛选出来,并且两个状态下需为同一辆车。...2)订单时段数量统计 需求12:统计各小时的订单数分布 前面我们已经将time时间转换为时间类型了,那么将时间戳转换为小时就非常简单了,时间属性方法可以参考传送门。
领取专属 10元无门槛券
手把手带您无忧上云