首页> 快讯 > > 详情

ChatGPT能写出比数据分析师更好的SQL吗?|环球速递

2023-04-06 00:01:01 来源:互联网摸鱼者

我尝试了ChatGPT一段时间之后,然后我想知道:ChatGPT可以做我的工作吗?它能比我做得还好?

我有2年的数据分析师的工作经验,擅长写sql。那么和ChatGPT相比,谁写的SQL更好呢?


(资料图片仅供参考)

我以3个LeetCode的SQL挑战题为准(一个简单,两个中等)。我会先写出一个解决方案,然后把题发给ChatGPT,最后对比下,看看哪个解决方案效果最好。

题目1(简单)

题目为:订单最多的客户

下面是我写的sql

WITH layer_1 AS ( SELECTcustomer_number, COUNT(DISTINCT order_number) AS order_number FROM orders GROUP BY customer_number)SELECT customer_number FROM layer_1ORDER BY order_number DESC LIMIT 1

下面是通过运行的时间:

现在让我们来看看ChatGPT是怎么回答这个问题的,

以下是ChatGPT的答案:

ChatGPT甚至解释了它做了什么。我觉得这个查询的可读性很强,写的比较规范。让我们看看它的表现如何。它可以执行,但比我的结果要慢。虽然我很高兴能比ChatGPT做得更好,但我很想知道我如何能改进这个查询。

题目2 (中等)

这个题目是“树形节点”

我写的第一个查询是这个:

# Write your MySQL query statement belowWITH l1 AS (SELECTt.id,c.id AS c_id,t.p_idFROM Tree tLEFT JOIN Tree cON c.p_id = t.id), l2 AS (SELECTid,COUNT(DISTINCT c_id) AS nb_childrens,COUNT(DISTINCT p_id) AS nb_parentsFROM l1GROUP BY id)SELECT id,CASEWHEN nb_childrens >0 AND nb_parents >0 THEN "Inner"WHEN nb_childrens >0 THEN "Root"ELSE "Leaf"END AS typeFROM l2

我在提交之前运行了下,结果出错了(狗头)......

事实证明,我对这些例子没有细心观看思考,尤其是第二个例子:

当一个节点既是叶子又是根时,应该输出为根。我把我的CASE WHEN的顺序改成这样:

CASEWHEN nb_childrens >0 AND nb_parents >0 THEN "Inner"WHEN nb_parents >0 THEN "Leaf"ELSE "Root"END

然后sql执行通过了,执行结果如下,162ms:

轮到ChatGPT了,下面是给出的sql,

执行时间为170ms

ChatGPT 给出的sql执行结果与我写的sql结果是一致的,缺点是:我写的sql更长,优点是时间上会稍微比ChatGPT的短一些。

题目3 (中等)

这个题目是“股票的资本损益”

下面的sql是我写的:

SELECT stock_name, SUM(CASEWHEN operation = "Buy" THEN -1*priceELSE priceEND) AS capital_gain_lossFROM StocksGROUP BY stock_name

执行是通过了,但是时间比较长

让我们看看ChatGPT给的答案

这一次,ChatGPT和我使用了类似的结构,查询也通过了.

可以说,这次挑战是ChatGPT赢了,响应速度更快,代码相对更简洁,性能上可能会差一丢丢,但是只要把问题描述的足够清晰,ChatGPT能很快给出答案。

但是ChatGPT仍然会出错,如果业务背景没有描述清晰的话。

最后,我问了ChatGPT一个问题:

总结:

总的来说,ChatGPT的表现优点超乎我的意料,它学习能力强,能纠错。但是业务能力是欠缺的,如果问题描述的不精确,结果可能会相差很大。

关键词:

上一篇:英国大臣违规被罚_全球今头条
下一篇:最后一页