首页 > 数据库 >ChatGPT 提高工作效率-一例SQL编写的过程

ChatGPT 提高工作效率-一例SQL编写的过程

时间:2023-05-16 23:13:11浏览次数:34  
标签:补丁 查询 工作效率 分组 SQL ChatGPT SELECT

ChatGPT 提高工作效率-一例SQL编写的过程


前言

遇到一个问题, 怀疑是有一些补丁没有被依赖. 
导致第一次更新时没有更新这些没依赖的补丁. 
后面更新时又更新了这些游离态的补丁.
导致出现 old 文件 覆盖 new 文件
出现程序问题. 
一个补丁还好着, 但是所有的补丁去检查就比较麻烦了.
所以想写出一个SQL来.
问题是 此处设计到了 3张表, 
一张信息表, 一张依赖关系表, 一张发布时间表
自己SQL能力非常菜鸡. 所以在贵文老师的帮助下使用了ChatGPT提高了编写效率.
所以想记录一下. 科学技术的确是生产力

思路

1. 主要是要获取所有模块最后一个发布的补丁列表
2. 查询所有没有被依赖信息的已发布补丁信息.
3. 基于2再删除1的结果, 获取如下内容:

不是该模块最后一个已发布, 并且没有依赖关系的补丁

ChatGPT的讲解

考虑到上一步的场景1 
应该需要使用窗口函数进行查询
但是自己的窗口函数处理能力基本上等于 0 语法都不熟悉
所以打开如下网站:https://chat.aidutu.cn/

我问的: 
SQLSERVER 查询 多分组情况下 每个分组的最后一个记录

ChatGPT答复的

您可以使用子查询和窗口函数来实现按多个分组列对结果进行分组,并且获取每个分组的最后一个记录。下面是一种可能的解决方案:

sql
SELECT *
FROM (
  SELECT 
    *,
    ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY id DESC) as rn
  FROM your_table
) t
WHERE rn = 1;

基于ChatGPT的讲解编写自己的SQL

解释:

首先在 FROM 子句中使用子查询,以便在内部查询中计算每个分组的最后一个记录。这个查询返回以下列:

col1、col2 和所有你需要的其他列,作为 GROUP BY 的参数。
id,作为分组内的排序列,并按降序排列,意味着第一行就是最后一行。
将这个子查询封装在外面的 SELECT 语句中,它过滤了每个分组中只包含 ID 最大的行。如果某个分组有多个相同的 ID,则该查询将返回其中任何一个。
总之,这个查询将返回每个分组的最后一个记录,即每个不同于其它分组的唯一组合。

自己编写的SQL就为:
    SELECT
     patchcode 
    FROM
     xxxx.patchinfo 
    WHERE
     patchid NOT IN ( SELECT deppatchid FROM xxxx.patchdepinfo ) 
     AND patchstate = 'PUBLISHED' 
     AND patchid NOT IN (
     SELECT
      patchid 
     FROM
      (
      SELECT
       *,
       ROW_NUMBER ( ) OVER ( PARTITION BY patchmodule ORDER BY publishtime DESC ) AS rn 
      FROM
       (
       SELECT
        a.patchid,
        a.patchcode,
        a.patchmodule,
        b.publishtime 
       FROM
        LCBM9999.patchinfo a
        INNER JOIN LCBM9999.PATCHPUBLISHED b ON a.patchid = b.patchid 
       ) w 
      ) t 
     WHERE
     rn = 1 
     ) order by patchcode asc 

感想

ChatGPT 的确是生产力工具
能够让我这种SQL菜鸡实现一定程度的高级SQL编写能力. 

感觉的确会对IT数从业人员产生巨大的挑战.  
需要不停的学习. 比机器人更能思考,更能创造价值才可以利于不败之地. 

学会的东西可能明天就是废纸了. 但是必须得有获取新知识,新方向的能力. 

标签:补丁,查询,工作效率,分组,SQL,ChatGPT,SELECT
From: https://www.cnblogs.com/jinanxiaolaohu/p/17405572.html

相关文章

  • SQL优化改写案例14(OB数据库SQL优化,把你的脑袋当成CBO)
    OB一哥们找我优化条SQL,反馈在OceanBase存储过程执行时间很慢,需要626秒才能出结果,安排。--原SQL:INSERTINTOinsurance_stat_sx(id,stat_date,cal_num,underwrite_num,veh_num,effect_num,effect_money,unit_code,life_......
  • Windows安装、配置、卸载MySQL教程
    MySQL是一个关系型数据库管理系统,目前为Oracle旗下产品,它具有开源、体积小、速度快的优点,许多网站使用的都是MySQL数据库。简单而言,MySQL数据库核心功能就是用来存储数据的。MySQL数据库分为社区版和商业版,这里介绍的是社区版的安装教程一、下载MySQL打开MySQL官网下载链......
  • 用嵌入式sqlite部署winform应用程序
    EmbeddedResource表示数据库已嵌入到您的dll中。Copytooutputdirectory设置在这种情况下不适用,它用于BuildAction:Content嵌入数据库后,您基本上必须在首次使用时将其取消嵌入。为此,将其从Assembly中读取并将其存储到文件中。classEmbeddedResourceTest{publicsta......
  • mysql update语法 竟然不支持limit区间限制
    首先查询可以这样写,没毛病的SELECT*fromaLIMIT1000,2000 1.然后看一个不是区间的limit,更新满足条件的前1000条,没问题updateaseta.imp_date=4wherea.is_sync=0limit10002.这样写是错误的updateaseta.imp_date=4wherea.is_sync=0limit1001,2000......
  • .Net 5 CanalSharp Mysql CDC (增量同步,捕获变更数据)Docker 系列之 Canal (CDC 增量
    CanalSharp阿里云的解决方案,需要两部分Canal 服务端要和Mysql连在一起(目前我是用docker部署的服务)另外一部分就是CanalSharp单独的客户端服务(.Net5服务)CanalSharp文档可以参考:https://canalsharp.azurewebsites.net/zh/安装服务,可以点击下边的连接。Docker系列之Canal......
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
    之前业务需要捕捉到业务数据增量部分,并对其进行宽表处理,这也是其中的一个技术方案,方案主要是用了CDC的技术。CDC全称是ChangeDataCapture,捕获变更数据,是一个比较广泛的概念,只要是能够捕获所有数据的变化,比如数据库捕获完整的变更日志记录增、删、改等,都可以称为CDC。该功能被......
  • sql--每天两道sql题,天天健康好身体_第二天
    每天会在网上找两三道sql题练习练习,提高自己的sql语句的使用能力(先自己思考出答案,再和别人的答案做一下对比,然后深入思考一下)以下是四个表信息: 问题1:查询所有课程都小于60分的学生的学号和姓名答案1:selectsid,count(cid)asnum,sum(score)aszongchengjifromgrade_......
  • 文心一言 VS chatgpt (17)-- 算法导论4.1 3~4题
    三、在你的计算机上实现最大子数组问题的暴力算法和递归算法。请指出多大的问题规模n0是性能交叉点一一从此之后递归算法将击败暴力算法?然后,修改递归算法的基本情况一一当问题规模小于n0时采用暴力算法。修改后,性能交叉点会改变吗?文心一言:在你的计算机上实现最大子数组问题......
  • SQL注入
    1、SQL注入的危害数据库数据泄露、注入获得shell2、SQL注入原理可控变量、带入到数据库中查询、变量未存在过滤或过滤不严谨原理就是网页中用户可以传入一个参数,这个参数和后端代码的sql语句进行拼接,然后将拼接后的sql语句放到数据库中进行数据操作。原本这个参数是为了在数据......
  • SSM整合报错:errorCode 1045, state 28000 java.sql.SQLException: Access denied for
    SSM整合报错:errorCode1045,state28000java.sql.SQLException:Accessdeniedforuser简述SSM整合项目配置好环境后,当要对数据库进行操作,加载jdbc.properties数据库配置文件时,出现下面的报错createconnectionSQLException,url:jdbc:mysql://localhost:3306/furn_ssm,......