SQL知识点:连续三行数据比较
连续三行数据比较
点击查看代码
WITH NumberSequence AS (
SELECT
id,
num,
LAG(num, 1) OVER (ORDER BY id) AS prev_num,
LAG(num, 2) OVER (ORDER BY id) AS prev_prev_num
FROM Logs
)
SELECT DISTINCT num
FROM NumberSequence
WHERE num = prev_num AND num = prev_prev_num;
在SQL中,WITH 子句(也称为公用表表达式,Common Table Expression,简称CTE)是一种临时结果集,它在查询的执行过程中被定义并可以使用。
WITH cte_name (column1, column2, ...) AS (
-- CTE的定义,可以是一个简单的SELECT查询或递归查询
SELECT ...
FROM ...
WHERE ...
-- 可以包含其他SQL子句,如GROUP BY、HAVING、ORDER BY等
)
-- 主查询,可以引用上面定义的CTE
SELECT ...
FROM cte_name
-- 可以与其他表或CTE进行连接、联合等操作
row_number()
ROW_NUMBER() OVER (表达式) 是 SQL 中的一个窗口函数(Window Function),它用于为结果集中的每一行分配一个唯一的序号。这个序号是基于指定的窗口分区和排序规则来生成的。以下是对其功能的详细解释:
点击查看代码
SELECT
employee_id,
department,
salary,
ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS row_num
FROM
employees;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架