跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL算法

高频 SQL 50 题:聚合函数实战

SQL 聚合函数在数据分析中应用广泛。涵盖 10 道高频面试题,涉及 COUNT、SUM、ROUND、DATE_FORMAT 等核心用法。重点解析了确认率计算中的 NULL 处理、除零错误及分组统计陷阱。通过修正错误 SQL 示例,展示了如何准确实现用户注册率、交易分析及游戏行为统计。适合准备数据库面试的开发者参考。

remedios发布于 2026/3/16更新于 2026/10/2498 浏览
高频 SQL 50 题:聚合函数实战

P570. 至少有 5 名直接下属的经历

文章配图

文章配图

对应的 SQL 语句:

在这里插入图片描述

P1934.确认率

在这里插入图片描述

在这里插入图片描述

对应的 SQL 语句:

**解法一:**使用 SUM / COUNT

**解法二:**使用 AVG

以下是我一开始时写的 SQL 语句(存在很大的问题):

SELECT S.user_id, ROUND(COUNT(action='confirmed')/COUNT(C.user_id), 2) AS confirmation_rate 
FROM Signups S 
LEFT JOIN Confirmations C ON S.user_id = C.user_id 
GROUP BY S.user_id
  • 问题 1:COUNT(action = 'confirmed') 无法正确统计确认次数

    • COUNT() 函数的逻辑是统计括号内「非 NULL 的行数」,而非「统计条件为 TRUE 的行数」:
      • 当 action = 'confirmed' 为 TRUE(满足确认)→ COUNT 算 1;
      • 当 action = 'confirmed' 为 FALSE(如 timeout/unconfirmed)→ COUNT 仍算 1(FALSE 不是 NULL);
    • 最终 COUNT(action = 'confirmed') 会等于 COUNT(C.user_id)(总操作次数),完全无法区分'确认'和'非确认'操作。
  • **问题 2:**MySQL 中「数值 ÷ 0」会直接返回 NULL

    • 若用户在 Confirmations 中无记录 → C.user_id 为 NULL → COUNT(C.user_id) = 0,MySQL 中「数值 ÷ 0」会直接返回 NULL

P620. 有趣的电影

在这里插入图片描述

对应的 SQL 语句:

取模 %

在这里插入图片描述

P1251. 平均售价

在这里插入图片描述

在这里插入图片描述

对应的 SQL 语句:

在这里插入图片描述

P1075. 项目员工 I

在这里插入图片描述

在这里插入图片描述

对应的 SQL 语句:

在这里插入图片描述

P1533. 各赛事的用户注册率

在这里插入图片描述

在这里插入图片描述

错误语句:

SELECT R.contest_id, ROUND( COUNT(R.user_id) / (SELECT COUNT(*) FROM Users) * 100, 2 ) AS percentage 
FROM Users U 
LEFT JOIN Register R ON U.user_id = R.user_id 
GROUP BY contest_id 
ORDER BY percentage DESC, contest_id ASC

在这里插入图片描述

**错误原因:**忽略了通过 GROUP BY contest_id 分组后,若有 User 没有任何分组,则其会留下一个 NULL 值,而这些 NULL 值就会形成一个分组,后续也会参与进计算里:COUNT(NULL) = 0 **解决方法:**加上 WHERE contest_id IS NOT NULL

对应的 SQL 语句:

在这里插入图片描述

P1211. 查询结果的质量和占比

在这里插入图片描述

在这里插入图片描述

对应的 SQL 语句:

在这里插入图片描述

P1193. 每月交易 I

在这里插入图片描述

对应的 SQL 语句:

提取日期函数 DATE_FORMAT

在这里插入图片描述

P1174. 即时食物配送 II

在这里插入图片描述

在这里插入图片描述

对应的 SQL 语句:

在这里插入图片描述

P550. 游戏玩法分析 IV

在这里插入图片描述

对应的 SQL 语句:

在这里插入图片描述

目录

  1. P570. 至少有 5 名直接下属的经历
  2. P1934.确认率
  3. P620. 有趣的电影
  4. 取模 %
  5. P1251. 平均售价
  6. P1075. 项目员工 I
  7. P1533. 各赛事的用户注册率
  8. P1211. 查询结果的质量和占比
  9. P1193. 每月交易 I
  10. 提取日期函数 DATE_FORMAT
  11. P1174. 即时食物配送 II
  12. P550. 游戏玩法分析 IV

更多推荐文章

查看全部
  • 5 个常见运维场景的 Python 脚本实现方案
  • 二维前缀和算法模板_C++
  • 大模型 AI 产品经理学习路线:从基础到精通
  • 微信网页版访问受限?试试 wechat-need-web 插件方案
  • Spring Cloud+AI:实现分布式智能推荐系统
  • 基于低代码平台的工单管理系统解决方案
  • ClawdBot (OpenClaw) Discord 机器人部署实战指南
  • OpenCode 配置 Kimi K2.5 接入指南
  • LangChain 结合 SQLite3 实现自然语言 SQL 查询
  • OpenClaw 配置飞书机器人教程
  • C++条件判断、循环与数组核心用法解析
  • 普通产品经理转型 AI 产品经理:核心技能与能力升级指南
  • 基于 OpenClaw 与优云智算的公众号 AI 自动化创作发布流程
  • WebAssembly 实战:Rust 计算模块与 Node.js 后端性能对比
  • Android WebRTC 视频通话开发实战:AI 优化与避坑指南
  • 从 Java 转到 Python,我的自学路线与副业感受
  • C++ 多态详解
  • 算法的“预谋”:前缀和如何改变游戏规则
  • 清华大学发布仿生多模态触觉传感器 SuperTac,结合大模型实现类人感知
  • Nanbeige4.1-3B 模型前向传播优化:LlamaForCausalLM 源码解析

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online