尝试使用chatgpt帮我优化sql

尝试写一些sql看看chatgpt写的和自己写的哪里不一样,帮助我打开思路。

第一题

数据库中有个员工表emp,建表语句如下:
create table emp_his (emp_id number, emp_name varchar(50));
表中存在重复记录(根据emp_id来判断),用SQL如何查出存在重复的 emp_id?

我给出的sql如下

select emp_id, count(1) as cnt 
from emp_his 
group by emp_id 
having 	count(1) >= 2;

将题目丢入chatgpt中给出的结果如下

SELECT emp_id
FROM emp_his
GROUP BY emp_id
HAVING COUNT(emp_id) > 1;

可以看出几乎是一样的,但是还是想问问它我的答案是否有优化的空间。

于是乎它说我的语句已经很不错了,再想优化就是添加索引了
在这里插入图片描述

第二题

有张student_scores表,存放每个学生,每门课程的分数,建表语句如下:
create table student_scores
(emp_id number
,course_name varchar(50)
,score number);
需要把每门课程按照学生分数降序排名并添加序号。

还是先把自己的写好的sql拿出来

尝试写一些sql看看chatgpt写的和自己写的哪里不一样,帮助我打开思路。

第一题

数据库中有个员工表emp,建表语句如下:
create table emp_his (emp_id number, emp_name varchar(50));
表中存在重复记录(根据emp_id来判断),用SQL如何查出存在重复的 emp_id?

我给出的sql如下

select emp_id, count(1) as cnt 
from emp_his 
group by emp_id 
having 	count(1) >= 2;

将题目丢入chatgpt中给出的结果如下

SELECT emp_id
FROM emp_his
GROUP BY emp_id
HAVING COUNT(emp_id) > 1;

可以看出几乎是一样的,但是还是想问问它我的答案是否有优化的空间。

于是乎它说我的语句已经很不错了,再想优化就是添加索引了

在这里插入图片描述

第二题

有张student_scores表,存放每个学生,每门课程的分数,建表语句如下:
create table student_scores
(emp_id number
,course_name varchar(50)
,score number);
需要把每门课程按照学生分数降序排名并添加序号。

还是先把自己的写好的sql拿出来

select emp_id, course_name, score, row_number() over(order by score desc) as row_num 
from student_scores 
order by score desc;

再看看chatgpt给出的结果

SELECT emp_id, course_name, score,ROW_NUMBER() OVER (PARTITION BY course_name ORDER BY score DESC) AS ranking
FROM student_scores;

可以看出chatgpt忽略了题目中的“需要把每门课程按照学生分数降序排名并添加序号”要求的是每门成绩而不是各科成绩排序。
当我将我的答案输入进后,chatgpt立刻就做出了修改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bBwZjNP6-1688713220935)(https:img-blog.csdnimg.cn/5a112e499d0944cb8dcf8724d890c273.png)]

尝试写一些sql看看chatgpt写的和自己写的哪里不一样,帮助我打开思路。

第一题

数据库中有个员工表emp,建表语句如下:
create table emp_his (emp_id number, emp_name varchar(50));
表中存在重复记录(根据emp_id来判断),用SQL如何查出存在重复的 emp_id?

我给出的sql如下

select emp_id, count(1) as cnt 
from emp_his 
group by emp_id 
having 	count(1) >= 2;

将题目丢入chatgpt中给出的结果如下

SELECT emp_id
FROM emp_his
GROUP BY emp_id
HAVING COUNT(emp_id) > 1;

可以看出几乎是一样的,但是还是想问问它我的答案是否有优化的空间。

于是乎它说我的语句已经很不错了,再想优化就是添加索引了
在这里插入图片描述

第二题

有张student_scores表,存放每个学生,每门课程的分数,建表语句如下:
create table student_scores
(emp_id number
,course_name varchar(50)
,score number);
需要把每门课程按照学生分数降序排名并添加序号。

还是先把自己的写好的sql拿出来

select emp_id, course_name, score, row_number() over(order by score desc) as row_num 
from student_scores 
order by score desc;

再看看chatgpt给出的结果

SELECT emp_id, course_name, score,ROW_NUMBER() OVER (PARTITION BY course_name ORDER BY score DESC) AS ranking
FROM student_scores;

可以看出chatgpt忽略了题目中的“需要把每门课程按照学生分数降序排名并添加序号”要求的是每门成绩而不是各科成绩排序。
当我将我的答案输入进后,chatgpt立刻就做出了修改
在这里插入图片描述

() over(order by score desc) as row_num
from student_scores
order by score desc;

再看看chatgpt给出的结果```sql
SELECT emp_id, course_name, score,ROW_NUMBER() OVER (PARTITION BY course_name ORDER BY score DESC) AS ranking
FROM student_scores;

可以看出chatgpt忽略了题目中的“需要把每门课程按照学生分数降序排名并添加序号”要求的是每门成绩而不是各科成绩排序。
当我将我的答案输入进后,chatgpt立刻就做出了修改
在这里插入图片描述

第三题

有表emp_his,表emp_inc,表结构一样,关联条件是emp_id,建表语句如下:
create table emp_his
(emp_id number,emp_name varchar(50),age number);
create table emp_inc
(emp_id number,emp_name varchar(50),age number);
emp_his表存放历史数据,emp_inc表存放有变化,或者新增的数据,如果要一个最新的全量数据sql如何写?

还是先将自己写的放出来

selectcase when inc.emp_id is not null then inc.emp_id else his.emp_id,case when inc.emp_name is not null then inc.emp_name else his.emp_name,case when inc.age is not null then inc.age else his.age
from emp_his his full outer join emp_inc inc ON his.emp_id = inc.emp_id;

chatgpt给出的结果如下

SELECT emp_id, emp_name, age
FROM emp_his
UNION ALL
SELECT emp_id, emp_name, age
FROM emp_inc;

看见union all的时候感觉好像是自己把问题想的复杂了,但是还是想让他帮我优化一下我写的sql。
优化原因以及结果如下
在这里插入图片描述
这道题确实可以用COALESCE()来做,看起来逻辑也会更加清晰。

总结:

chatgpt可以用来做一些基础的优化,但是也可能给出的结果是不正确的,正确合理的使用AI才能提升工作以及学习的效率。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 大结果_java三大工厂结果总览

2018-11-02 21:27:18 开始写 谢谢、Thank you、Salamat Do(撒拉玛特朵)、あリがCm o*n(嘉蒙)とゥ(阿里嘎都)、????? (勘三哈咪瘩)、terima Kasih(得力马卡系)、kob-khun(寇布库恩)、dhanyavaad(达尼阿瓦德)、toda(透达)、te?ekkr ederim(特谢库尔埃戴里姆)、Dzie,kuje(以…

[教师资格证-中学笔试-裸考过关]教育知识与能力必背知识点(技巧)

裸考过了综测和专业课,都是刚刚达线,而教育知识与常识需要背,所以68分没过。。。很惨.。。就差了一个选择题。 所以再次考试的时候还是准备了下,至少得看看考什么,不然真的太惨了,68.。。。不过其他两门裸考…

搭载鸿蒙os的电脑,全新华为 MatePad Pro 发布在即:搭载鸿蒙系统

华为宣布将于 6 月 2 日晚 8 时举行线上发布会,将正式发布可以覆盖手机,手表,平板等移动终端的鸿蒙操作系统。华为全新的平板产品华为 MatePad Pro 也将在此次发布会上亮相,这款新平板也将全面搭载鸿蒙操作系统,它也将…

ajax 皇马,历史上最伟大11支球队 西班牙国家队在列 皇马两次入选

导读:历史上最伟大11支球队 西班牙国家队在列 皇马两次入选 各位点开这篇文章的朋友们,想必都是很高的颜值吧,我们真的是很有缘哦,小编每天都会给大家带来不一样的体育资讯,如果对小编的文章或者其他的什么&#xff0c…

1500_1763 全球统一 伊比利亚 俄罗斯 西欧

1500~1763 全球统一 伊比利亚 俄罗斯 西欧 全球统一 1500~1763 1763,欧洲人已探明世界上大部分的海岸线,洲际贸易规模巨大,种族隔离被打破,一半非洲人离开非洲,动植物随之混合 亚洲由于足够强大且物资充沛&#xff…

Python注释以及快捷键

1、单行注释 单行注释是 # Mac的快捷键是 command/ windows的快捷键是 Ctrl / 2、多行注释 多行注释是三个单引号 注释 因为这个字符串没有名字,而且程序对这个字符串不做任何处理,所以它对程序的运行没有任何影响。它相当于一个注释,尽…

印章生成工具类开发

Java代码见我的资源 免费使用印章生成工具类&#xff0c;Java开发-Java文档类资源-CSDN下载印章生成工具类&#xff0c;Java开发更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/jlonghou/85218149代码&#xff1a; pom <?xml version"…

鲁祥老师吉他课学习笔记

鲁祥老师吉他课学习笔记 导语 参考教材&#xff1a; 《吉他入门经典教程》李国标 《弹指之间》潘尚文 《吉他教本》好连得出版社 《吉他教程》杰瑞吉他学校 《伯克利现代吉他教程》 《吉他考级教程》英国RSL其中的原声吉他和电吉他教程 《一个月电吉他新手养成计划》宫胁俊郎 …

谋定菲律宾农业全产业链建设 对话国际农民丰收节贸易会

谋定菲律宾农业全产业链建设 对话国际农民丰收节贸易会 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国研智库 国情讲坛 哲商对话 万权采编&#xff1a;应菲律宾驻中国大使馆商务参赞格伦.佩尼亚兰达邀请&#xff0c;AIF亚投联代表团同菲律宾BOI在菲律宾马卡提…

因果解释能够对规则进行解释吗?

来源&#xff1a;《哲学动态》2017年第10期作者&#xff1a;初维峰&#xff08;西安交通大学人文社会科学学院&#xff09; 本文受中国博士后科学基金面上资助项目“当代西方因果解释理论研究”(2017M613160)资助。 在现实生活中&#xff0c;我们不仅要对某一事件进行解释&…

Cocos技术派 | 3d人物渲染详细教程

文章目录 前言3d系统基础FBX模型导入配置模型参数相机分组2D相机设置添加UI节点添加3D节点设置灯光设置平台接收阴影设置3D相机3D场景编辑器设置模型材质设置模型产生阴影设置相机位置播放动画增加3D动作 本文假设你是一个新手&#xff0c;按照本文的操作&#xff0c;可以跑起来…

xmas cissp_Sourcehunt PHP Xmas 2015:发出请求请求的礼物!

xmas cissp Before we round the year up, there’s one more issue of Sourcehunt to publish, as a small Xmas gift to all the underrepresented open source projects out there. Let’s get everyone some more contributors, shall we? 在整年之前&#xff0c;还有一期…

在计算机上写一封邮件的英文,一封邮件英文怎么写

1. 用英语写的一封电子邮件 Dear David, Hello, Its very gald to recive your e-mail.You told me you will come to China to study.Its great!I think you must want to know how to learn Chinese well.OK,let me tell you.First,you should listen to teachers carefully.…

几种常用英文信件范文

几种常用英文信件范文 1&#xff09;感谢信Letter of thanks 2&#xff09;祝贺信 Letter of greetings 3&#xff09;邀请信 Letter of invitations 4&#xff09;一般信件 Common letters 5&#xff09;商业信件 Business letters 6&#xff09;求学信 Letters of Applying…

python自动发送邮件自定义邮件发件人和收件人的显示内容

#自定义处理邮件收发地址的显示内容 def _format_addr(s): name,addr parseaddr(s) print name print addr #将邮件的name转换成utf-8格式&#xff0c;addr如果是unicode&#xff0c;则转换utf-8输出&#xff0c;否则直接输出addr return formataddr((\ Header(name,utf-8).en…

用python实现邮件的自动发送

首先开启自己的邮箱SMTP服务&#xff08;绑定自己的手机&#xff0c;但记住密码不要泄露&#xff0c;防止别人拿自己邮箱发送别的内容&#xff09; 这里我们拿163邮箱举例&#xff1a;Smtp服务器地址 和 端口 Ssl&#xff1a; smtp.163.com&#xff1a;465 非ssl &#xff1a…

使用qq邮箱作为程序客户端自动发送邮件

在用户一些软件或自己的java程序是&#xff0c;需要配置发送邮件 这里的发送人就填写具体的qq邮箱&#xff0c;但是下面的smtp密码就不是对应的qq密码了&#xff0c;这里需要的是授权码。我们需要去qq邮箱申请开启”IMAP/SMTP服务” 如何使用IMAP服务&#xff1f; IMAP是什么…

【原创】PHP 邮件自动发送(QQ邮箱)

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!环境 win10phpstrom2020.1PHP 7.0QQ邮箱开通SMTP服务 1.登录 QQ 邮箱 2.开启 SMTP 服务 3.发送短信

控制飞书客户端自动发邮件

自动化飞书邮箱网页版应该有不少例子&#xff0c;可以使用Clicknium、Selenium&#xff0c;Playwright这些工具实现。这次使用[Clicknium](https://www.clicknium.com/)来介绍一下桌面客户端的自动化&#xff0c;进一步讲解如果利用Python实现桌面端自动化。想要写一个能稳定运…