- 博客(56)
- 资源 (2)
- 收藏
- 关注
原创 SQL 入门:第一条查询怎么写?从 SELECT、WHERE 到 GROUP BY 讲清楚
这篇文章为SQL初学者提供了清晰的入门指南,重点讲解了SELECT、WHERE、ORDER BY和GROUP BY四个核心子句的使用逻辑。
2026-04-27 22:23:18
360
原创 SQL 数据分析入门:如何把业务问题翻译成 SQL 查询
例如别人问“哪个分类最好”,你如果没先定义“最好”是什么意思,就很容易写出一个 technically 正确、业务上却不对的查询。销量最高销售额最高订单数最多利润最高这是完全不同的分析问题。SQL 真正的价值,不是在于你写出了一条多复杂的语句,而是在于你能不能把一个业务问题翻译成可验证的数据答案。明确指标明确维度用 SQL 把两者正确连接起来哪个分类卖得最好哪些客户最活跃指标如何随时间变化那你已经不只是“会查数据”,而是在真正开始做 SQL 数据分析了。
2026-04-27 22:02:40
455
原创 【翻译】星型模式 vs. 雪花模式详解
数据仓库设计中,星型模式和雪花模式是两种主流表结构组织方式。星型模式采用完全非规范化的维度表,直接连接事实表,具有查询简单、性能快的优势,但存在数据冗余问题。雪花模式对维度表进行规范化拆分,减少了冗余但增加了查询复杂度。实际应用中,多数团队采用混合方案,根据业务需求灵活选择。对于刚起步的团队,推荐从星型模式入手,因其更易于理解和维护。选择合适模式的关键在于理解业务查询需求,权衡查询性能与数据维护成本。
2026-03-01 09:09:40
740
1
原创 【翻译】使用SQL 构建直方图与频率分布
本文介绍了如何使用SQL构建直方图和频率分布来分析数据分布情况。主要讲解了三种方法:1)使用CASE定义固定宽度桶;2)通过数学公式动态分桶;3)处理分类数据的频率分布。文章还提供了添加累积频率、跨分组比较分布等进阶技巧,并分享了选择桶宽的经验法则(如Sturges法则和Scott法则)。最后强调在SQL中直接构建直方图只需基本的聚合和窗口函数,是一种高效的数据分析方式。
2026-03-01 08:55:20
1039
原创 SQL 计算百分位数和中位数
SQL中没有内置的MEDIAN()函数,但可以通过多种方法计算中位数和百分位数。本文介绍了四种实用方法:1)使用PERCENT_RANK()计算百分位等级;2)利用窗口函数查找中位数;3)通过NTILE()划分四分位数;4)计算特定百分位数值。文章还对比了均值和中位数的差异,说明中位数对异常值的稳健性,并提供了跨数据库的实现参考。这些技巧可帮助数据分析师获得更准确的数据洞察。
2026-02-18 16:29:58
1152
原创 SQL 市场篮子分析:客户一起购买什么?
文章摘要: 市场篮子分析(Market Basket Analysis)通过识别频繁购买的商品组合(如"面包+牛奶")揭示消费者行为模式。核心SQL技术是自连接:统计同一订单中不同商品的出现频率,并计算置信度(如购买面包后买牛奶的概率)。实际应用包括优化商品陈列、设计捆绑促销和个性化推荐。示例查询展示了如何从订单数据中提取热门商品组合(如面包+牛奶245次),为企业提供可操作的销售策略。
2026-02-18 16:21:12
564
原创 使用 SQL 进行队列分析
本文介绍了队列分析(Cohort Analysis)在用户留存评估中的应用。队列分析通过跟踪特定时间段内注册用户的行为变化,帮助产品团队识别留存问题。文章详细讲解了三个SQL实现步骤:1)识别用户首次活跃的队列月份;2)计算用户活动周期数;3)构建留存矩阵并计算留存率。通过对比不同月份注册用户的留存数据(如1月用户2个月后留存33%),可以及时发现产品改进效果或运营问题。最后建议将数据可视化呈现为留存热力图,便于直观分析用户留存趋势。
2026-02-16 15:46:34
1097
原创 精通递归 CTE:SQL 的盗梦空间
递归CTE是SQL中的强大工具,特别适合处理层级数据和生成序列。它包含三个关键部分:锚点成员(起点)、递归成员(引用自身)和终止条件(避免无限循环)。主要应用包括:1)生成连续日期填补数据空白;2)遍历组织结构图,构建完整的汇报路径;3)生成数列等数学序列。使用时需注意设置合理的终止条件,避免无限递归,对于大型数据结构应考虑性能优化。递归CTE在PostgreSQL、SQLite等主流数据库中均得到支持,是处理层级关系的高效解决方案。
2026-02-16 15:37:23
877
原创 SQL EXISTS vs IN:何时使用哪个(附性能优化技巧)
SQL中EXISTS与IN的区别及NULL陷阱:本文深入解析EXISTS和IN子查询的工作原理与性能差异。EXISTS采用短路机制,适合大结果集查询;IN构建完整列表,适合小结果集。现代数据库通常能优化两者执行计划,但在涉及NULL值时存在关键差异:当子查询包含NULL值,NOT IN会错误返回空结果集,而NOT EXISTS能正确处理。建议在否定查询中优先使用NOT EXISTS以避免NULL陷阱。
2026-02-15 20:46:20
983
原创 SQL 聚合函数详解:COUNT、SUM、AVG、MIN、MAX
聚合函数(Aggregate Functions)对多行数据执行计算,并返回单个结果。与处理单个值的常规函数不同,聚合函数会将数据"折叠"成汇总统计信息。函数用途返回值类型COUNT()计数行或非 NULL 值整数SUM()求和数值数字AVG()计算平均值数字MIN()查找最小值与输入相同MAX()查找最大值与输入相同核心特点多行输入,单个输出:处理多行数据,返回一个汇总值自动忽略 NULL:大多数聚合函数会自动忽略 NULL 值与 GROUP BY 结合:可以按组进行汇总适用范围广。
2026-02-15 20:09:25
739
原创 使用 SQL 实现帕累托原则(80/20 法则)
摘要: 帕累托分析(80/20法则)通过SQL查询识别关键收入驱动因素。步骤包括计算产品销售额、排序、累计求和及百分比,最终筛选出贡献80%收入的前20%产品。示例显示智能手机和笔记本电脑占总收入73%,属于核心产品,而其他产品构成"长尾"。该方法可指导企业优化库存、营销策略和资源分配,聚焦高价值产品提升效益。扩展分析还能识别低效产品以调整经营策略。
2026-02-14 12:42:28
797
原创 SQL 描述性统计:超越平均值和计数
本文介绍了SQL中常用的描述性统计方法,包括中位数、众数和百分位数,帮助数据分析师更全面地理解数据分布。中位数不受极端值影响,适用于薪资、房价等数据;众数可识别最频繁出现的值,适用于产品分析;百分位数则能揭示数据分布情况,特别适用于性能监控。文章提供了不同数据库的实现方法,并通过实例展示了这些统计量的实际应用价值,强调了它们比简单平均值更能反映真实数据特征的优势。
2026-02-13 13:07:27
815
原创 使用 SQL 构建转化漏斗
SQL漏斗分析指南摘要 本文介绍3种SQL方法分析用户转化漏斗: 基础聚合:简单统计各步骤用户数,但无法验证顺序准确性; 有序连接:通过左连接确保步骤顺序(如先访问后加购),结果更精准; 单次透视:用CASE WHEN快速聚合,适合大数据但无顺序验证。 核心价值在于识别关键流失点(如80%用户在加购环节流失),指导优化资源分配。文中包含完整SQL示例、数据模型及结果解读,帮助团队基于真实用户旅程提升转化率。
2026-02-13 12:43:53
1142
原创 SQL 数据分析终极指南
本文介绍了专业数据分析师的核心技能:数据清理、时间序列分析和窗口函数应用。通过电商案例演示了如何使用SQL处理实际业务问题,包括数据分箱(CASE语句)、处理NULL值(COALESCE)、按月聚合销售数据(日期函数)以及高级分析技术(窗口函数)。重点讲解了累计总计计算和Top N客户分析,展示了如何将原始数据转化为可操作的商业洞察。文章强调数据分析不仅仅是简单查询,而是通过系统化方法解决复杂业务问题。
2026-02-12 22:08:49
1642
2
原创 SQL 优化技术精要:让查询飞起来
SQL查询优化指南摘要 本文介绍了优化SQL查询性能的5个关键技术: 只选择必要列,避免使用SELECT *,减少I/O和网络开销,提高缓存效率。 使用SARGable查询:避免在WHERE子句中对列使用函数,确保查询可以利用索引。 避免前导通配符:LIKE '%term'会阻止索引使用,应优先使用前缀匹配。 理解执行计划:通过EXPLAIN分析查询执行方式,识别全表扫描等问题。 优化索引策略:合理设计复合索引,注意列顺序的最左前缀原则。 这些方法能显著提升查询速度,将耗时操作转化为高效执行。
2026-02-12 21:34:40
1535
原创 SQL ORDER BY 和 LIMIT:轻松实现排序和分页
SQL查询中的ORDER BY和LIMIT子句是数据处理的关键工具。ORDER BY可按单列或多列排序(ASC升序/DESC降序),并支持NULL值处理。LIMIT用于限制返回行数,结合OFFSET可实现分页功能。不同数据库在语法细节上存在差异,如NULL排序规则和LIMIT/OFFSET表达方式。通过这两个子句,开发者能高效实现数据排序、Top-N查询和分页展示,将杂乱数据转换为有序、可管理的结果集。
2026-02-11 21:25:15
878
原创 使用 SQL 进行 RFM 客户细分分析
摘要: RFM分析是一种通过Recency(最近性)、Frequency(频率)和Monetary(金额)三个维度评估客户价值的经典方法。本文详细介绍了如何通过SQL实现RFM分析:首先聚合交易数据计算客户最近购买天数、订单数和总消费额,然后使用NTILE函数进行1-5分评分(Recency按降序评分,其余按升序),最后通过CASE语句将评分转换为"Champions"、"Loyal Customers"等可操作的客户细分群体。这种方法无需CRM工具,直接利用数据库即
2026-02-11 20:24:13
1094
原创 解决 SQL 中的 Gaps and Islands 问题
摘要:SQL中的"Gaps and Islands"问题涉及识别数据序列中的连续值(岛屿)和缺失值(间隙)。通过"行号差异法"可以高效解决:为排序后的数据分配行号,用实际值减去行号生成组标识符,相同标识符的行即构成连续岛屿。这种方法适用于用户登录分析、制造批次识别等场景,既能统计连续区间,也能通过LEAD()函数查找间隙。该技术为数据分析提供了处理不完整序列的有效工具。
2026-02-11 15:16:05
697
原创 使用 SQL 分析 A/B 测试结果
A/B测试通过将用户随机分为对照组和变体组,比较不同版本的转化效果。核心SQL分析包括:1)计算各组转化率,2)检查样本比例是否匹配(SRM)。高级分析可细分用户群体(如设备类型、国家),揭示差异化效果。实验数据通常存储在两个表中:用户分组表和转化记录表。通过SQL连接分析,能获得比自动化工具更深入的洞察,如发现移动端用户转化提升更显著等关键结论。
2026-02-10 08:29:15
818
原创 精通 SQL LEAD 和 LAG 函数进行行比较
SQL窗口函数LAG和LEAD使用指南:LAG()用于获取当前行之前的行数据,LEAD()用于获取后续行数据。这两个函数可避免复杂的自连接操作,支持设置偏移量和默认值,并能通过PARTITION BY实现分组内比较。文章通过销售数据分析示例展示了如何计算日环比变化、增长率等常见业务指标,同时提供了最佳实践建议,包括必须使用ORDER BY、处理NULL值、合理分区以及性能优化等注意事项。
2026-02-09 00:50:06
1156
原创 SQL 删除重复行完全指南
本文详细介绍了SQL中识别和删除重复数据的完整方法。首先通过GROUP BY和HAVING子句定位重复记录,然后提供了四种处理策略:保留第一条/最后一条记录、保留最完整记录、创建新表去重以及聚合重复数据。文章还强调了数据安全操作规范,包括备份、事务处理和外键检查,并建议添加UNIQUE约束防止未来重复。最后给出了不同场景下的策略选择指南,帮助数据专业人员高效清理数据库中的重复信息。
2026-02-09 00:41:16
925
原创 SQL 条件聚合:超越基础 GROUP BY
条件聚合是一种强大的SQL技术,通过将CASE WHEN与聚合函数结合,可以在单个查询中实现复杂的数据分析。它能够: 按条件统计不同状态的数据(如订单状态统计) 创建透视表,将行数据转为列展示 计算百分比和各类指标 结合GROUP BY实现分组统计 典型应用场景包括: 统计不同状态的订单数量和金额 按月展示产品销售数据 计算各类完成率、转化率 对比不同类别的平均值 这种方法避免了多次查询,提高了效率,特别适合生成报表和数据分析。使用时需注意处理NULL值(使用ELSE 0)和确保精确计算(如浮点数百分比)。
2026-02-08 18:39:10
1075
原创 SQL 窗口帧:ROWS vs RANGE 深度解析
窗口函数中 ROWS 与 RANGE 的关键差异:ROWS 按物理行计算,适合逐行累计;RANGE 按ORDER BY 值分组计算,适合处理重复值场景。本文通过销售数据累计和移动平均案例,演示两种窗口帧的应用场景和注意事项,帮助开发者避免常见陷阱。最佳实践包括明确声明窗口帧、使排序列具有确定性,以及根据业务逻辑选择合适类型。掌握这一关键概念能显著提升 SQL 分析精度。
2026-02-06 21:49:48
1120
原创 StarRocks的外部表
顾名思义,外部表指的是保存在其他数据源中的数据表,而 StartRocks 只保存表对应的元数据,并直接向外部表所在数据源发起查询。目前 StarRocks 已支持的第三方数据源包括 MySQL、Elasticsearch、Hive、StarRocks、Apache Iceberg 和 Apache Hudi。本文着重介绍两个外部表:MySQL 外部表和 Elasticsearch 外部表。
2023-09-14 23:00:36
1673
原创 StarRocks的物化视图
物化视图是在基表之上构建的查询逻辑并将结果持久化存储。在 StarRocks 中,物化视图对于用户是透明的,即用户发起查询的时候不需要指定物化视图的名称,而是直接查询基表,StarRocks 会决定是否从物化视图读取数据。
2023-09-10 11:45:00
1479
原创 迁移Docker的数据目录
停服,即停用 Docker 的服务,不再写入新数据。注意是 Docker,而不是 Docker-Compose。配置文件,让 Docker 从新的位置进行数据加载和存储。确认 Docker 的新目录是否正确。前面的工作做完后,就可以启动服务啦。
2023-09-09 11:45:00
181
原创 部署RabbitMQ
找到 nginx 所在的安装目录,在 conf 目录下创建文件夹 vhosts,并在 nginx.conf 文件中添加下面一行配置。进入到 vhosts 目录,创建 mq 的 nginx 配置文件。通过域名访问 nginx 后台。修改环境变量的配置文件。
2023-09-08 09:44:23
115
原创 升级Nginx版本
我们在迁移 gitlab 后,需要在原来的服务器上转发 tcp 请求到新服务器。由于原服务器上装的 nginx 没有 stream 模块,无法用到配置 tcp 转发,所以我们不得已升级 nginx。
2023-09-08 06:45:00
441
原创 分区和分桶
在现代数据库中,很多数据库都支持分区(Partition)或分桶(Tablet),它的主要目的是提高查询性能。StarRocks 同时支持分区和分桶,若干个 Tablet 组成一个 Partition。
2023-09-05 23:29:54
754
原创 StarRocks 的数据模型
目前,StarRocks 支持的数据模型有:明细模型(Duplicate Key)、聚合模型(Aggregate Key)、更新模型(Unique Key)和主键模型(Primary Key)。其中,更新模型和主键模型是聚合模型的特殊情形。下面将详细介绍这些模型的特点和使用场景。
2023-09-04 23:09:48
1760
1
原创 SQL 层级查询(二)
在上一篇文章里,我们介绍了在MySQL中实现层次查询的两种方式。前文举的示例是获取从叶子点到根节点的路径,今天我们要实现的是从根节点找到所有叶子节点。
2023-05-27 09:00:00
734
原创 SQL 层级查询(一)
相信大家在工作中都遇到过存在层次关系的数据表,典型的例子诸如菜单表(多级菜单)、用户表(拥有上下级关系)、商品类目表(多级类目)
2023-05-26 08:30:00
1122
原创 SQL 获取定长连续子序列
比如,id = 3、4、5 的数据,它们的状态为 0,且它们构成的序列长度正好为 3。满足这个规则的还有(7,8,9)、(8,9,10)、(9,10,11)构成的序列。比如,在 rs = 2 的子序列中,id = 3 和 rn = 1 分别加上 2,得到新的 id = 5 和 rn = 3,5 - 3 仍是 2。id 为 3 ~ 5 是一个连续子序列,7 ~ 11 是一个连续子序列,14 ~ 15 是一个连续子序列。
2023-05-25 08:15:00
241
MySQL 5.7 入门教程
2023-09-08
MySQL 初学者范例教程
2023-09-08
ChatGPT中英文Prompt合集.xlsx
2023-05-25
简易Python爬虫示例
2023-05-18
Python小游戏集合.zip
2023-05-17
Exploring Computer Science
2023-05-15
国外的大学开设的数据库课程的课件
2023-05-15
Oracle NoSQL 初学者指南
2023-05-15
ChatGPT问题库.xlsx
2023-05-15
A generalization of Bondy’s pancyclicity theorem
2023-05-14
employee-sample-database-main.zip
2023-05-14
基于 Spring 实现文件上传的功能
2023-05-14
基于 SpringBoot 的调度框架
2023-05-14
ChatGPT 的 prompt 大全(调教指南)
2023-05-14
Introduction to SQL - Stanford University
2023-05-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅