- 博客(397)
- 收藏
- 关注
原创 数仓实践:浅谈 Kimball 维度建模2
(2)雪花模型:在星型模型基础上,一个或多个维度表没有直接连接到事实表,而是连接到维度表上,间接连接事实表,形状像雪花。业务是多变的,模型的设计要能够复用,承受住业务的多变,能够新增维度、维度属性满足业务新视角的分析。通过维度,业务过程的度量、事实变得丰富起来,比如订单常见的维度:商品、商家、买家、门店。每一个维度包含大量的描述信息,比如商家维度包含商家id,营业执照,粉丝层级。2、维度建模的一般过程。
2025-10-30 01:20:31
302
原创 数仓实践:浅谈 Kimball 维度建模1
累计快照事实表:记录具有时间跨度的业务处理过程的整个信息,比如从用户下单、物流、评价、售后等整个流程的信息。事实表的度量:可累加(销售金额、销售数量)、半可累加(仅仅某些维度可加)、不可累加(订单状态)周期快照事实表:记录有规律、固定时间间隔的业务累计数据,粒度较粗,比如账户月均余额事实表。用于关联和连接相应的维度,通过这些外键,进行各个角度、维度分析。维度属性最好是文本、离散的,减少编码的使用,提供丰富的切割能力。维度表是维度建模的灵魂,设计的好坏决定数仓的好坏。
2025-10-30 00:56:46
220
原创 SQL267 牛客每个人最近的登录日期(三)
摘要:本文通过SQL查询计算次日留存率。基础数据表获取用户首次登录日期,去重数据表记录用户每日登录情况。次日留存率的计算方式为:分子是首次登录后第二天仍活跃的用户数,分母是所有首次登录用户数。查询使用datediff函数判断次日留存条件,最终结果保留三位小数。该方法准确反映了次日留存的核心指标。
2025-10-09 20:52:01
109
原创 每类试卷得分前3名
文章摘要:该SQL查询用于分析考试数据,首先按用户ID(uid)和标签(tag)分组统计每个用户在各标签下的最高分(max_score)和最低分(min_score),然后按标签分组对用户进行排名,排名依据最高分降序、最低分降序和用户ID降序,最终筛选出每个标签下排名前三的用户。查询结果包含标签、用户ID和排名信息。
2025-10-09 20:31:46
162
原创 SQL163 每篇文章同一时刻最大在看人数
文章摘要:本文通过SQL查询解决最大在线人数统计问题。关键点在于处理同一时间点的进出记录时,先计算进入再计算离开(通过flag标记实现)。使用窗口函数按文章ID和时间排序,累计求和计算瞬时人数,最终获取每篇文章的最高在线人数并降序排列。该方法准确处理了并发事件的时序问题,适用于用户行为分析场景。
2025-10-09 18:41:10
187
原创 ARP 协议的工作原理?
如果不相同就忽略此数据包;如果相同,该主机首先将发送端的 MAC 地址和 IP 地址添加到自己的 ARP 列表中,如果 ARP 表中已经存在该 IP 的信息,则将其覆盖,然后给源主机发送一个 ARP 响应数据包,告诉对方自己是它需要查找的 MAC 地址。源主机收到这个 ARP 响应数据包后,将得到的目的主机的 IP 地址和 MAC 地址添加到自己的 ARP 列表中,并利用此信息开始数据的传输。当一台主机将一个数据包要发送给目的主机时,检查自己的ARP列表中是否有该 IP 地址对应的 MAC 地址。
2025-10-02 15:41:57
211
原创 SQL55 统计员工薪资扣除比例
文章摘要:该SQL查询用于计算部门'dep1'员工的薪资扣减比例。通过连接salary_tb和staff_tb表,查询结果显示员工ID、姓名及扣减比例(扣减后薪资/正常薪资百分比)。结果按扣减比例降序排列,精确到小数点后一位并以百分比形式呈现。该分析可帮助管理部门了解员工薪资变动情况。
2025-10-02 15:23:24
130
原创 SQL54 统计用户从访问到下单的转化率
文章摘要:该SQL查询分析用户访问与下单转化率。通过创建order_base和visit_base临时查询,分别统计每日用户下单和访问数据。然后计算每日访问用户中产生下单的转化率(CR),结果按日期排序输出。查询使用LEFT JOIN确保未下单用户也被计入分母,通过COALESCE处理NULL值,并使用ROUND函数保留1位小数百分比。最终输出包含日期和转化率两列,转化率格式为百分比形式。
2025-10-02 15:18:58
296
原创 SQL51 统计商家不同会员每日访问人次及访问人数
研究分析了用户访问数据与VIP等级的关系。通过关联visit_tb和uservip_tb表,统计了不同VIP等级的用户访问情况。结果显示:1) 总访问人次(不去重)和独立访问用户数(去重)均按VIP等级分组统计;2) 结果按访问总人次降序排列。该分析有助于了解不同VIP等级用户的活跃度差异。
2025-10-02 14:35:50
185
原创 SQL50 查询连续登陆的用户
摘要:SQL查询语句用于查找连续登录3天及以上的用户。通过分析login_tb和register_tb表中的数据,按用户ID和日期差值分组,筛选出满足条件的记录并按用户ID排序。该查询能有效识别用户的连续登录行为,适用于用户活跃度分析场景。
2025-10-02 14:31:39
100
原创 SQL48 每个商品的销售总额
该SQL查询分析产品销售数据,按类别统计销售总量并排名。主要功能包括: 从订单表和产品表关联获取产品名称、类别和销售数量 按产品和类别分组汇总销售总量 使用窗口函数对每个类别内的产品按销量降序排名 输出产品名称、销售总量及类别内排名 结果将展示每个类别中最畅销的产品及其销售排名情况。
2025-10-02 14:09:45
85
原创 SQL43 获取指定客户每月的消费额
join的时候过滤,那就在on上限制,其实也就是where过滤,效果一样,但执行计划不同。注意下过滤条件的位置,在大数据量下需要注意优化。
2025-10-02 00:08:22
119
原创 SQL40 每个月Top3的周杰伦歌曲
给多个表,需要建立行型模型,也就是事实表关联维表,通过维表过滤一些条件。这个题还需要row_number排序,求分组top3。还需要结合最后期望结果的形式,排序。
2025-10-01 23:47:04
216
原创 SQL160 国庆期间每类视频点赞量和转发量
这里先膨胀数据3倍,增加一列时间,国庆的前三天。重要的还是理解题意,根据题意来做。判断播放时间在的范围求指标。要么增加列,再打标来判断。筛选出播放数据在的范围。
2025-10-01 23:32:29
130
原创 SQL159 每个创作者每月的涨粉率及截止当前的总粉丝量
MySQL语法和sparksql语法的区别。时间的处理,date_format。:指定输出的日期格式字符串。难点:累计求和(窗口函数)
2025-10-01 19:32:08
155
原创 SQL158 每类视频近一个月的转发量/率
题目要求:播放记录里面最大日期的最近30天。需要先找出播放记录里面的播放日期。where可以嵌套子查询来过滤。
2025-10-01 19:02:21
197
原创 SQL157 平均播放进度大于60%的视频类别
第二步:先对视频取平均,再对tag取平均。第一步:算每个用户看某视频的播放进度。播放进度需要在明细上先求出,
2025-10-01 00:42:44
114
原创 SQL156 各个视频的平均完播率
简单起见,结束观看时间与开始播放时间的差>=视频时长时,视为完成播放。落在 2021 年作为筛选口径即可(也可按题目需要改为同时约束。重要的是理解题意:求什么,指标口径是什么,需要过滤什么。题意是“有播放记录的每个视频”,所以不需要左连接或补零。视频完播率是指完成播放次数占总播放次数的比例。1、每次播放:判断是否为完播,0和1。就是完播次数 / 播放次数。用 0/1 表示是否完播;2、avg求平均完播。
2025-10-01 00:37:29
183
原创 CC18 复制无向图
(映射表 + 队列;邻接表由题目节点持有,克隆图本身不算“额外空间”)BFS/DFS 均可,这里用 BFS(迭代更稳,不怕深递归栈)。做“去重 + 访问标记 + 取克隆体”;在给定定义中默认非空(已初始化为。:第一次遇到原节点就创建其克隆体;(每个原节点、每条原边各处理一次)只会克隆“从给定起点可达的。,克隆图会按原样保留;
2025-09-30 20:54:07
265
原创 CC17 加油站
否则唯一解是:从使“当前油箱”从未跌到负数的那一站出发。* 一次扫描,O(n) 时间 / O(1) 空间。* 若总油量 < 总花费,必无解返回 -1;
2025-09-30 16:06:01
184
原创 CC14 出现一次的数字ii
对 32 位的每一位 i,统计所有数在该位上为 1 的次数。的结果就是只出现一次那个数在该位上的值。,由于其他数都出现三次,
2025-09-30 15:24:44
211
原创 高频算法:1011. 在 D 天内送达包裹的能力
这题和“吃香蕉”一样是设船的运力为cap。cap越大,完成所需天数越少(单调)。在区间上二分出。
2025-09-29 16:11:06
141
原创 面试题:875. 爱吃香蕉的珂珂
该问题要求在给定时间h内吃完所有香蕉堆的最小速度k。通过二分查找在1到最大堆香蕉数之间寻找最小可行速度。对于每个候选速度,计算吃完所有堆所需时间,若时间≤h则尝试更小速度,否则增大速度。关键点在于利用二分查找的单调性,以及正确计算每堆所需的上取整时间。算法时间复杂度为O(nlogM),其中n为堆数,M为最大堆香蕉数。空间复杂度O(1)。
2025-09-29 15:44:42
121
原创 clickhouse:入门
通过在插入时增量计算结果,查询运行在显著较小的数据子集上,使这些视图能够轻松扩展到PB级别级别的数据。查询执行快速且轻量。增量视图支持所有聚合函数,并且可以很好地扩展——甚至达到PB级别的数据——因为每个查询操作于正在插入的数据集的一个小而近期的子集上。在 ClickHouse 中,“低延迟”意味着查询可以在没有延迟的情况下处理,而不需要提前准备答案,正是在用户界面页面加载的同一时刻。当新数据插入到源表时,ClickHouse 会自动将物化视图的查询应用于新的数据块,并将结果写入到单独的目标表中。
2025-09-28 23:58:37
692
原创 计算机网络:谈下你对五层网络协议体系结构的理解?
将网络层传输的IP数据报组装成帧,每个帧上包含数据和必要的控制信息(同步信息、地址信息、差错信息)把传输层的报文段或用户数据报封装成分组和包进行传输,分组也叫IP数据报,简称数据报。交换的数据单元是报文,协议有很多,比如DNS,HTTP,SMTP。综合OSI参考模型和TCP/IP五层模型,最终是五层协议的结构体系。传输的是比特,屏蔽掉传输介质和物理设备的差异。复用:多个应用层进行可同时使用下面传输层的服务。分用:传输层把收到的信息分别交给上层的应用层。分为:物理层、数据链路层、网络层、传输层和应用层。
2025-09-24 17:28:56
173
原创 CC7 求二叉树的前序遍历
本文介绍了二叉树前序遍历的非递归实现方法。前序遍历顺序为根节点、左子树、右子树。非递归方法使用栈模拟递归过程:先将根节点入栈,循环弹出栈顶节点并访问,然后依次将右子节点和左子节点入栈(确保左子节点先处理)。这种利用栈后进先出特性的方法,能正确保持前序遍历顺序。文章链接提供了更详细的实现说明。
2025-09-21 00:23:50
245
原创 CC6 二叉树的后序遍历
本文介绍了二叉树后序遍历的递归实现方法。后序遍历顺序为左子树→右子树→根节点。代码通过Java实现,使用深度优先搜索(DFS)递归地遍历左子树和右子树,最后访问根节点并将节点值加入结果列表。时间复杂度为O(n),空间复杂度为O(h),其中h为树高,最坏情况下为O(n)。该实现简洁直观,适用于二叉树的后序遍历需求。
2025-09-21 00:12:15
117
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅