力扣高频SQL50题知识点

发布时间:2026/10/17 10:49:08

力扣高频SQL50题知识点 一、查询select product_id from Products where low_fatsY and recyclableY;select 输出 from 表名where 条件select name from Customer where referee_id ! 2 or referee_id is NULL;对于条件为某一元素为NULL用“元素 is NULL”select name,population,area from World where area 3000000 or population 25000000;select 输出 from 表名 注意输出顺序select author_id as id from Views # 重命名 where author_id viewer_id group by author_id order by id;group by 分组去重order by 升序排列select tweet_id from Tweets where length(content)15;length( ) 表示字符数二、连接1.左连接select EmployeeUNI.unique_id, Employees.name from Employees left join EmployeeUNI on Employees.id EmployeeUNI.id;SELECT ...FROM 表ALEFT JOIN 表B ON 表A.字段 表B.字段;左连接LEFT JOIN左连接以左表LEFT TABLE为基准返回左表中的所有记录右表中匹配的记录如果存在如果右表中没有匹配则返回NULL值2.统计次数select customer_id, count(*) as count_no_trans from visits left join transactions on visits.visit_id transactions.visit_id where transactions.transaction_id is null group by customer_id;select customer_id, count(*) as count_no_trans选择客户ID和统计无交易访问次数count(*)计算符合条件的记录数as count_no_trans给结果列起别名from visits指定主表为visits表包含所有访问记录left join transactions on visits.visit_id transactions.visit_id左连接transactions表连接条件两个表的visit_id相等左连接确保visits表的所有记录都会被保留where transactions.transaction_id is null筛选条件只保留transactions表中没有对应记录的访问即那些访问了购物中心但没有进行交易的记录group by customer_id按客户ID分组对每个客户统计其无交易访问的次数3.自连接自连接T197将同一表自连接两次分别作为今天和昨天使用datediff函数确保日期差为1天datediff函数计算两个日期之间的天数差确保只比较相邻日期比较温度并筛选出更高的记录select w1.id from Weather w1, Weather w2 where datediff (w1.recordDate, w2.recordDate) 1 and w1.Temperature w2.Temperature;自连接T1661将Activity表自连接两次分别作为start和end通过machine_id和process_id匹配同一进程计算时间差并求平均值select a.machine_id, ROUND(AVG(b.timestamp - a.timestamp), 3) as processing_time from Activity a join Activity b on a.machine_id b.machine_id and a.process_id b.process_id and a.activity_type start and b.activity_type end group by a.machine_id;JOIN条件通过JOIN条件匹配同一进程的start和end记录计算时间差1a.machine_id b.machine_id作用确保连接的是同一台机器的记录原因每台机器有独立的进程不同机器的进程ID可能重复示例机器0的进程0与机器1的进程0不会混淆2a.process_id b.process_id作用确保连接的是同一进程的start和end记录原因每个进程有唯一的process_id示例进程0的start记录只与进程0的end记录匹配3a.activity_type ‘start’作用筛选出start类型的记录作为左表原因确保左表只包含开始时间示例只选择start行排除end行4b.activity_type ‘end’作用筛选出end类型的记录作为右表原因确保右表只包含结束时间示例只选择end行排除start行ROUND(..., 3)将平均值四舍五入保留3位小数4.字查询子查询T97通过子查询获取前一天的温度比较当前温度和前一天温度select id from Weather w1 where Temperature ( select Temperature from Weather w2 where datediff(w1.recordDate, w2.recordDate) 1 );子查询T1661select machine_id, ROUND(AVG(end_time - start_time), 3) as processing_time from ( select machine_id, process_id, max(case when activity_type end then timestamp END) as end_time, max(case when activity_type start then timestamp END) as start_time from Activity group by machine_id, process_id ) as process_times group by machine_id;逐行解析1select machine_id, process_id选择机器ID和进程ID作为分组依据每行代表一个独立的进程2max(case when activity_type end then timestamp END) as end_time作用提取每个进程的结束时间戳聚合函数MAX确保同一进程只取一个结束时间条件判断当活动类型为’end’时取timestamp值示例进程0的结束时间1.5203max(case when activity_type start then timestamp END) as start_time条件判断当活动类型为’start’时取timestamp值聚合函数MAX确保同一进程只取一个开始时间作用提取每个进程的开始时间戳示例进程0的开始时间0.712工作原理条件筛选CASE WHEN activity_type end THEN timestamp END只提取活动类型为’end’的时间戳其他情况返回NULL聚合处理MAX(...)从同一进程的所有记录中取最大值由于每个进程只有一个’end’记录实际返回该结束时间NULL值被自动忽略4group by machine_id, process_id分组依据按机器和进程分组作用将同一进程的start和end记录合并为一行结果每个进程一行包含开始和结束时间max函数用于从一组值中找出最大值MAX([ALL | DISTINCT] expression)核心特性1忽略NULL值MAX()自动跳过NULL值无数据时返回NULL2适用数据类型数值型整数、浮点数日期时间型datetime, timestamp字符串型按字典序比较3DISTINCT选项可选参数但通常不使用因为最大值不受重复值影响MAX(DISTINCT column)与MAX(column)结果相同常见用法场景1基础最大值查询SELECT MAX(salary) AS highest_salary FROM employees;2分组最大值最常用SELECT department_id, MAX(salary) AS max_salary FROM employees GROUP BY department_id;3条件聚合高级用法SELECT department_id, MAX(CASE WHEN gender M THEN salary END) AS male_max_salary, MAX(CASE WHEN gender F THEN salary END) AS female_max_salary FROM employees GROUP BY department_id;聚合函数汇总函数作用NULL处理典型场景MAX()最大值忽略找出最高薪资、最新时间MIN()最小值忽略找出最早时间、最低价格AVG()平均值忽略计算平均分数、平均时长SUM()总和忽略计算总销售额、总时长COUNT()计数特殊处理统计记录数量CASE表达式case when condition1 then result1 when condition2 then result2 else default_result end
延伸阅读

更多相关文章

2026/10/16 2:36:07

day24_jsvmp后两个生成算法

一、在switch中插桩,先看大概日志信息有什么变化! “case”,a[F1],“stack”,Y看见array一直递增!数组变化【视频35分】 我们就知道大概要插桩什么了,比如chartCodeAt,String.FromChartCode,parseInt等等操…

2026/10/16 8:08:47

蓝绿 + 灰度( 容器 )

原生蓝绿:两套完整环境,流量一次性全部切换;风险点:一旦切过去,全部用户都走到新版本,故障爆炸半径是全站。蓝绿 灰度(组合模式):保留蓝、绿两套完整集群,不…

2026/10/15 7:46:41

从单体到微服务:架构演进与SpringCloud全景图

【SpringCloud系列01】从单体到微服务:架构演进与SpringCloud全景图 个人主页:夏天拐跑了西瓜 专栏传送门:《大模型应用开发》、《Spring 生态全家桶体系化实战》 学习方向:Java 后端|AI‑Agent 大模型应用开发爱好者 …

2026/10/17 10:45:15

子母钟系统采购——应以全生命周期总拥有成本为核心标尺

关键词:数字子母钟、gps子母钟系统、ntp子母钟、网络子母钟系统医院、轨道交通、学校、工厂、智慧楼宇等项目建设子母钟系统时,采购常陷入只对比硬件报价、优先低价方案的误区。前期投入看似低廉,但运行3-5年后易出现备件停产、维…

2026/10/17 10:45:15

SQL生成落地关键:定制能力与推理稳定性实战指南

1. 这不是选“谁家大模型更好”,而是选“谁能把SQL生成这件事真正落地”最近两周,我连续帮三支不同行业的团队做过SQL生成场景的技术评估:一支是金融风控中台,要从千万级客户行为日志里实时提取异常路径;一支是电商BI小…

2026/10/17 10:45:15

从“人眼排雷”到“智能防控”:AI文档审核如何赋能企业提效?

在政企单位与大型企业的日常运转中,文档不仅是信息的载体,更是法律效力的延伸。从对外发布的红头文件、商务合同,到对内的管理制度、会议纪要,任何一处错别字、标点误用,甚至语义歧义,都可能引发严重的合规…

2026/10/17 10:45:15

鸿蒙Flutter Scrollbar实战:适配触摸与鼠标双模式的滚动条调优

说实话,写鸿蒙生态下的Flutter组件,每次都有种“带着熟悉武器进新战场”的感觉。Scrollbar这个组件,在标准Flutter里你可能只用一行Scrollbar(child: ListView(...))就完事了,但在OpenHarmony上,它偏偏是“细节决定体验…

2026/10/17 10:45:15

Agent学习总结二

二、智能体发展史2.1、基于符号与逻辑的早期智能体人工智能领域的早期探索,深受数理逻辑和计算机科学基本原理的影响。当时候研究者们普遍相信:人类的智能,尤其是逻辑推理能力,可以被形式化的符号体系所捕捉和复现。这一核心思想催…

2026/10/17 10:40:15

机械臂预分析:用Matlab可视化可达空间与可操作性

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/17 0:04:32

PlanarSLAM:面向曼哈顿世界的点线面联合SLAM系统

简介:本资源是面向机器人视觉与SLAM研究者的C开源RGB-D SLAM系统实现,专为结构化室内场景(如办公室、走廊)设计,通过融合点、线、平面三类几何特征并引入“曼哈顿世界”假设,显著提升位姿跟踪鲁棒性与稠密地…

2026/10/17 0:04:32

TDH Workflow调度实战:从DAG依赖驱动到任务编排与故障排查

1. 从一个调度脚本说起:TDH Workflow到底在解决什么问题第一次接触TDH的Workflow,是在一个数据清洗项目里。当时团队每天要跑几十个ETL任务,任务之间有严格的先后依赖——A表清洗完才能跑B表的关联,B表跑完才能触发C表的聚合。最开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑