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;
posted @   测试三思  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示