SQL面试真题解答 SQL求连续五天上升 (SQL窗口函数使用)

SQL面试真题解答

SQL求连续五天上升 (SQL窗口函数使用)

sql进阶:求某个日期的连续上涨天数

求解连续区间是数据分析、数据仓库笔试面试中常考的SQL题目,今天分享笔试面试题,期待各位拿到心仪的offer或有所收获!

一、案例分析

表中有某个日期列和某个数值列,给定某个日期,求这个日期往前推数值的连续上涨天数

以下是一种使用 SQL 来解决判断连续五天上升的示例思路。

深入理解SQL窗口函数的使用技巧。

在SQL中判断连续多天的数值是否上升,可以使用窗口函数,特别是LAG()和LEAD()函数,以及RANK(),  DENSE_RANK(),    ROW_NUMBER()等,这些函数可以帮助我们基于前n行或后n行的数据进行比较。

以下是一个示例查询,用于判断连续五天的数值是否呈上升趋势。

解题思路是,判断相邻两个数值,今日比昨日是否上升,asc_flag用于标记数值是否上升 ,上升计作1。然后使用窗口函数逐日累加。使用asc_add_sum 和continue_5则用于统计上升趋势的持续情况和过去5个数据点内的变化。如果累加值,今日 - 前第五日 =5,说明今日满足连续五天上升。

可以扩展为连续任意天数。使用比较灵活。

SELECT 
    id,
    date_time,
    actual_value,
    before_value,
    asc_flag,
    row_id,
    asc_add_sum,
    continue_5
FROM (
    SELECT 
        row_id,
        id,
        date_time,
        actual_value,
        before_value,
        asc_flag,
        asc_add_sum,
        asc_add_sum - LAG(asc_add_sum, 5, asc_add_sum)OVER(ORDER BY id, date_time )AS continue_5
    FROM (
        SELECT 
            id,
            date_time,
            actual_value,
            before_value,
            asc_flag,
            row_id, 
            SUM(asc_flag) OVER(ORDER BY  date_time ) AS asc_add_sum
        FROM (
            SELECT 
                ROW_NUMBER()OVER(ORDER BY date_time )AS row_id,
                id,
                date_time ,
                actual_value,
                LAG(actual_value, 1, actual_value*0.999)OVER(ORDER BY date_time ) AS before_value,
                CASE WHEN actual_value > LAG(actual_value, 1, actual_value*0.999)OVER(ORDER BY date_time ) THEN 1 ELSE 0 END AS asc_flag 
            FROM tbl_data_log
        )AS tmp
    )AS tmp2
)AS tmp3

请注意,此查询适用于支持窗口函数的SQL数据库,支持大多数数据库PostgreSQL 8.40、SQL Server 2005、Oracle 9.2 以及 MySQL 8.0 以上版本。对于不支持窗口函数的旧版数据库,可能需要使用自连接或更复杂的逻辑来实现相同的功能。

请注意,这只是一种基本思路,实际情况可能需要根据具体的数据结构和需求进行调整和优化。同时,不同的数据库在语法上可能会有一些差异。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/754591.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

你的编程小助手:Kimi!!【送源码】

从OpenAI发布AI大模型到现在已经快2年时间,中间随着新模型的不断出现,也让大家认识到了AI的强大之处,现在AI已经渗透到我们生活,工作的方方面面。 这期间国产大模型也在努力发展,不断完善,甚至一些大模型在…

用Vue3和Plotly.js生成多折线图

本文由ScriptEcho平台提供技术支持 项目地址:传送门 基于 Plotly.js 的交互式折线图绘制 应用场景介绍 本代码示例展示了如何使用 Plotly.js 库创建交互式折线图。用户可以在图中点击点以添加注释,从而实现数据可视化和探索。此功能可广泛应用于数据…

ai智能语音机器人在电销里发挥怎样的作用

得益于语音识别技术的的进步,人工智能发展越来越成熟。相信作为企业的管理者,都遇到过这样的事:一个电销新人刚刚入行,需求经过一两个月的学习培训才能成为一名合格的销售人员。在这段学习的期间,企业投入的成本是没有…

PS-抠图

在一个图片中,当你单独用到一个人物,或者物品的时候,你可以选择抠图,单独把这个人物模型给扣下来,不要他的背景,不要其他物品。 在PS中,我们看到一个大熊猫,当我们想用到这个熊猫的…

快速清理Word中的嵌套表格

实例需求:Word文档中表格有的单元格中包含嵌套表格(注意其中表格中有合并单元格),如下图所示。 现在需要删除单元格顶部的嵌套表格(如上图中的表格1和表格3),如下图所示,如果表格较多…

友力科技广州数据中心搬迁

搬迁工作内容 1.搬迁技术工作 1)确定机房搬迁的负责人以及负责人的联系方式,保证在搬迁的过程中统一指挥管理。 2)确定服务器的数量,服务器的型号,服务器的配置等,如有需要,联系相关服务器的供货商或者厂家提供技术支持…

EdgeOne 边缘函数 - 构建边缘网关

目前,各大主流厂商都推出了自己的边缘 Serverless 服务,如 CloudFlare Workers、 Vercel EdgeRuntime 等;腾讯云 EdgeOne 边缘函数提供了部署在边缘节点的 Serverless 代码执行环境,只需编写业务函数代码并设置触发规则&#xff0…

免费分享:2021年全国30米分辨率最大NDVI数据集(附下载方法)

气候变化及其对陆地生态系统的影响已成为核心议题,备受社会各界的瞩目。植被作为地理环境的关键构成部分,是气候变迁与人文活动对环境影响的敏感晴雨表。其中,归一化植被指数(NDVI)可以作为衡量地面植被状况的重要指标…

【C语言】解决C语言报错:Invalid Pointer

文章目录 简介什么是Invalid PointerInvalid Pointer的常见原因如何检测和调试Invalid Pointer解决Invalid Pointer的最佳实践详细实例解析示例1:未初始化的指针示例2:已释放的指针示例3:返回局部变量的指针示例4:野指针 进一步阅…

①常用API----Math

public static int abs(int a) // 返回参数的绝对值 public static double ceil(double a) // 返回大于或等于参数的最小整数 public static double floor(double a) // 返回小于或等于参数的最大整数 public static int round(f…

ubuntu22.04编译安装tesseract

1、 为什么用自己编译安装,而不采用apt安装? 由于tesseract有很多依赖包,直接用deb包或者rpm包等安装包安装很复杂,不一定能成功安装。 2、安装基本的依赖包 sudo apt update sudo apt install g autoconf automake libtool pkg…

float8格式

产生背景 在人工智能神经元网络中,一个参数用1字节表示即可,或者说,这是个猜想:因为图像的颜色用8比特表示就够了,所以说,猜想神经元的区分度应该小于256。 数字的分配 8比特有256个码位,分为…

AWS云计算平台:全方位服务与实践案例

摘要 在数字化浪潮的推动下,云计算已成为企业转型的强大引擎。AWS作为云计算的先锋,不仅提供了一系列强大的基础设施服务,更是在人工智能领域不断探索和创新。本文将带您领略AWS的全方位服务,并透过实际案例,感受其在…

ROS2创建服务用RCLCPP实现

1.创建服务提供者service_server_01.cpp #include "example_interfaces/srv/add_two_ints.hpp" #include "rclcpp/rclcpp.hpp" class ServiceServer01 : public rclcpp::Node { public: ServiceServer01(std::string name) : Node(name) { RCLCPP_…

应对铜价飙升,慧能泰推出超高性价比240W五芯线专用eMarker芯片

全球铜价仍然居高不下,以前买电线论捆算,现在巴不得论‘克’珍藏。这年头,换根充电线都得三思而后行,考虑的不是颜色款式,而是‘这条线的铜含量,值几个涨停板?’ 说实话,铜价上涨&a…

[AHK]微信表情快捷输入

需求: 希望在电脑上微信聊天时用键盘快捷输入常用表情。 工具: AutoHotkey v1 使用说明: 微信中按空格显示热键提示窗口,输入键盘序列后,按空格输出相应表情 配置: 源代码: /** 脚本&…

Python之父推荐!Star 60k!深入CPython内核:揭秘内部实现细节

都说 Python 是人工智能的“天选”语言,为什么呢? 可能很多读者都知道,Python 的解释器是用 C 语言写的,所以其实我们在谈论 “Python” 的时候,99.9% 的情况说的就是 “CPython”! CPython 是目前最流行的…

一文弄懂线性回归模型

1、引言 今天,我们将深入探讨机器学习中的三个关键概念:线性回归、代价函数和梯度下降。这些概念构成了许多机器学习算法的基础。起初,我决定不写一篇关于这些主题的文章,因为它们已经被广泛涉及。不过,我改变了主意&…

小白快速入门canvas画海报

小编以微信小程序原生语言举例 wxml页面&#xff1a; <canvas type"2d" id"myCanvas" style"width:375px;height:667px;"></canvas> js页面&#xff1a; import drawQrcode from ../../../utils/qrcode/weapp.qrcode.esmdata: {…

IDEA SpringBoot整合SpringData JPA(保姆级教程,超详细!!!)

目录 1. 简介 2. 创建SpringBoot项目 3. Maven依赖引入 4. 修改application.properties配置文件 5. Entity实体类编写 6. Dao层接口开发 7. 测试接口开发 8. 程序测试 1. 简介 本博客将详细介绍在IDEA中&#xff0c;如何整合SpringBoot与SpringData JPA&#xff0c;以…