Code前端首页关于Code前端联系我们

如何使用 ChatGPT 创建自动化 SQL 语句?

terry 2年前 (2023-09-26) 阅读数 65 #后端开发

作为一名设计师,您可能已经使用过自然语言处理 (NLP) 及其改变我们与技术交互方式的潜力。 OpenAI 使用的文本到 SQL 工具是从自然语言文本生成 SQL 语句的强大方法。在这篇博文中,我们将介绍七个富有创意且不寻常的示例,展示如何使用 ChatGPT 创建 SQL 语句。 如何利用ChatGPT自动生成SQL语句?

1。修改现有查询语句

下面的示例展示了如何在 Text-to-SQL 中给出现有的复杂 SQL 查询并对其进行修改:从现有 SQL 查询中删除自定义答案 如何利用ChatGPT自动生成SQL语句?

简述:

附加的 SQL 查询并删除 2021 年第一季度发生的所有结果。

SELECT Product_name, SUM(size) AS Total_quantity_sold FROM sales WHERE date INTO '2021-01-01' AND '2021-12-31' GROUP BY Product_name ORDER BY Total_quantity_sold DESC;"

对应翻译(对应的期望也可以翻译成中文):

请修改以下SQL语句,删除第一季度的2021年数据,恢复其他季度的数据

SELECT Product_name, SUM(quantity) AS Total_quantity_sold FROM sales WHERE date the '2021-01-01' AND '2021-12-31' GROUP BY Product_name ORDER BY Total_quantity_sold › statements DESC;” 在此示例中,我们提供了一个现有的 SQL 查询,用于检索 2021 年全年每个结果的总销售额。WHERE 子句。

2。不仅是英语!还提供中文版本

您可以使用任何语言的自然语言输入创建 SQL 查询。以下是使用中文

鼓励话语的示例:

显示过去一个月每个产品类别的销量,以及类别名称和上次销售日期。

生成 SQL 语句:

SELECT categories.category_name, COUNT(*) AS sales_count, MAX(orders.order_date) AS last_sale_date
FROM categories
JOIN products ON categories.category_id = products.category_id
JOIN order_details ON products.product_id = order_details.product_id
JOIN orders ON order_details.order_id = orders.order_id
WHERE orders.order_date BETWEEN DATEADD(MONTH, -1, GETDATE()) AND GETDATE()
GROUP BY categories.category_name

此示例演示了 Text-to-SQL 的功能,能够从任何语言的自然语言输入生成 SQL 查询。即使文本提示是用中文编写的,它仍然可以理解 Text-to-SQL 并将查询转换为有效的 SQL 语句。此查询捕获过去一个月每个产品类别的销售数量,以及类别名称和最后一次销售的日期。该查询连接类别、产品、item_order 和订单表,并使用聚合函数计算每个类别的销售数量和最后销售日期。结果经过筛选,仅包含上个月的订单,并按类别名称分组。

3。向现有 SQL 查询添加过滤器

简短说明

获取附加的 SQL 查询并添加过滤器以显示居住在加利福尼亚州的按总支出排名前 10 位的客户。

“SELECT customer_name, SUM(order_total) AS Total_spent FROM 命令 GROUP BY customer_name ORDER BY Total_spent DESC;”

对应翻译(对应的期望也可以翻译成中文):

请添加额外的 SQL 查询过滤条件,显示居住在加州的前 10 名客户并且总支出最高。

“SELECT customer_name, SUM(total_spent) AS total_spent FROM GROUP BY customer_name ORDER BY total_spent DESC;”

输出 SQL 语句:

SELECT customer_name, SUM(order_total) 
AS total_spent FROM orders JOIN customers 
ON orders.customer_id = customers.customer_id 
WHERE state = 'California' 
GROUP BY customer_name 
ORDER BY total_spent DESC LIMIT 10;

此示例为每个单独的客户提供现有的 SQL 查询。 。使用 Text-to-SQL,我们可以修改 SQL 语句以添加筛选器,以仅显示居住在加利福尼亚州的前 10 位客户。通过访问订单和客户表并添加过滤器以按州进行过滤,我们只能获取居住在加利福尼亚州的客户,并将结果限制为总支出前 10 名。?提供了数据库模式,并且需要 Text-to-SQL 编写 SQL 语句来检索总金额超过 1,000 的所有订单的客户名称、订单日期、产品名称和数量。订单和产品名称包含这些单词。 “椅子。”使用数据库架构,Text-to-SQL 可以定义客户、订单和订单详细信息表之间的关系,并编写 SQL 语句来连接这些表并检索所需的数据。

5。根据日期数过滤数据

快词

Show me all orders between January 1, 2022 and March 1, 2022.

对应的翻译(对应的期望也可以翻译成中文):

显示term-period从2022年1月1日到3月1日, 2022 年之间的所有订单。

生成的 SQL 语句:

SELECT * FROM orders WHERE order_date BETWEEN '2022-01-01' AND '2022-03-01'; 

此示例演示如何使用 Text-to-SQL 创建按指定日期过滤数据的 SQL 语句。在此示例中,SQL 语句检索 2022 年 1 月 1 日至 2022 年 3 月 1 日期间下的所有订单。Orders 表包含有关每个订单的信息,包括订单日期、客户名称和产品信息。

6。不只是SELECT - 还可以Update

快字

Update the price of all products in the electronics category by 10%.

的对应翻译(使用中文也可以返回对应的期望):

使用SQL更新产品类别电子产品是电子产品的价格,以及将价格提高 10%。

生成 SQL 语句:

UPDATE products SET price = price * 1.1 WHERE category = 'electronics';

此示例演示如何使用文本转 SQL 创建更新表中数据的 SQL 语句。在此示例中,SQL 语句更新了电子产品类别中所有产品的价格,并将价格百分比增加了 10%。通过在WHERE子句中指定排序,我们可以只选择需要更新的结果。

创建 SQL 查询来检索自定义报告的数据,该报告显示上一季度每个产品类别的总收入,以及订单数量和平均订单价值。

对应的翻译(对应的期望也可以翻译成中文):

创建一条SQL查询语句,检索上一条每个产品类别的总收入、订单数和订单价值。该季度。对于特定报告,数据应按总收入降序排列。

生成 SQL 语句:

SELECT categories.category_name, 
SUM(order_details.quantity * order_details.price) AS total_revenue, 
COUNT(DISTINCT orders.order_id) AS num_orders, 
AVG(orders.order_total) AS avg_order_value
FROM categories 
JOIN products ON categories.category_id = products.category_id 
JOIN order_details ON products.product_id = order_details.product_id 
JOIN orders ON order_details.order_id = orders.order_id 
WHERE orders.order_date BETWEEN DATEADD(QUARTER, -1, GETDATE()) AND GETDATE()
GROUP BY categories.category_name 
ORDER BY total_revenue DESC;

在此示例中,我们要求 Text-to-SQL 创建 SQL 查询来检索自定义报告的数据,该报告最终显示该季度每个产品类别的总销售额。订单和平均订单价值。此查询连接类别、产品、订单详细信息和订单表,并使用聚合函数计算每个类别的总收入、订单数和平均订单价值。结果经过筛选,仅包含上一季度的订单,并按总收入降序排列。此查询可用于创建自定义报告,帮助公司按产品类别跟踪其销售情况。

8。用它来进行代码评审——了解复杂问题的功能

提示的对应翻译

Explain in natural language what this SQL query does:
SELECT department_name, AVG(salary) AS avg_salary, COUNT(*) AS num_employees 
FROM employees 
JOIN departments ON employees.department_id = departments.department_id 
GROUP BY department_name 
HAVING AVG(salary) > 50000 AND COUNT(*) > 10 
ORDER BY avg_salary DESC;

(对应的期望也可以用中文重复):

请使用通俗易懂的语言解释以下SQL查询的作用:
SELECT department_name, AVG(salary) AS avg_salary, COUNT(*) AS num_employees 
FROM employees 
JOIN departments ON employees.department_id = departments.department_id 
GROUP BY department_name 
HAVING AVG(salary) > 50000 AND COUNT(*) > 10 
ORDER BY avg_salary DESC;

执行后的响应

此SQL查询检索员工和部门表中的员工工资和部门名称。它使用 JOIN 子句连接两个表,将相应的员工分配到他们的部门。使用GROUP BY子句按部门分组,计算每个部门的平均工资和员工人数。使用HAVING子句过滤掉平均薪资低于5万、员工数少于10人的部门,最后使用ORDER BY子句对结果按照平均薪资降序排序,更容易找到薪资最高的部门。这个问题可以帮助管理层了解每个部门的平均工资和规模,以便做出更好的管理决策。

Ends

Text-to-SQL 是一个强大的工具,不仅可以将自然语言文本转换为 SQL 语句,还可以修改现有的 SQL 查询。

这就是我们今天要分享的内容。感谢您的阅读。我希望这可以帮助你。创建文章并不容易。如果你喜欢我的文章,别忘了点赞和分享,让有需要的人看到。最后别忘了关注“前端专家”。您的支持将是我分享的最大理由。后续我会继续发布更多内容,敬请期待。

原文:
https://www.eversql.com/7-unusual-uses-of-chat-gpt-for-text-to-sql-and-sql-queries/

作者:奥德·瓦林

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门