如何评价deepseek-V3 VS OpenAI o1 自然语言处理成Sql的能力

DeepSeek-V3 介绍

在目前大模型主流榜单中,DeepSeek-V3 在开源模型中位列榜首,与世界上最先进的闭源模型不分伯仲。

准备工作:

笔者只演示实例o1 VS DeepSeek-V3两个模型,大家可以自行验证结果或者实验更多场景,同时也会简单说一下笔者使用感受!

1、openAI o1模型

PS: o1模型是由ChatGPT Plus/Pro 提供,童鞋可以参考教程

https://littlemagic8.github.io/2024/12/08/how-to-update-ChatGPTPro-plus/

2、注册DeepSeek账号 官网:https://www.deepseek.com/

为严谨,如下图所示

实际应用案例对比

为了更直观地了解 DeepSeek-V3 和 OpenAI o1 的实际表现,我们通过编程任务进行了对比测试。

***测试任务:*将自然语言查询转换为SQL语句: 显示所有今年销售额超过100万的产品 从新建数据库,新建表,新建字段开始,让萌新小白都能看懂的

DeepSeek-V3 的回答:

好的!下面我将从零开始,一步一步教你如何创建一个数据库、表、字段,并编写SQL语句来查询"今年销售额超过100万的产品"。即使是小白也能轻松看懂!


1. 创建数据库

首先,我们需要创建一个数据库来存储数据。数据库就像一个大仓库,里面可以放很多表格。

sql 复制代码
CREATE DATABASE SalesDB;
  • CREATE DATABASE 是SQL语句,用于创建数据库。
  • SalesDB 是数据库的名字,你可以根据需要改成其他名字。

2. 使用数据库

创建好数据库后,我们需要告诉SQL,接下来要在这个数据库里操作。

sql 复制代码
USE SalesDB;
  • USE 是SQL语句,用于选择要操作的数据库。

3. 创建表

接下来,我们需要创建一个表来存储产品信息。表就像Excel表格,每一行是一条记录,每一列是一个字段。

sql 复制代码
CREATE TABLE Products (
    ProductID INT AUTO_INCREMENT PRIMARY KEY, -- 产品ID,唯一标识
    ProductName VARCHAR(100) NOT NULL,        -- 产品名称
    SalesAmount DECIMAL(15, 2) NOT NULL,      -- 销售额
    SalesDate DATE NOT NULL                   -- 销售日期
);
  • CREATE TABLE 是SQL语句,用于创建表。
  • Products 是表的名字。
  • ProductID 是产品的唯一标识,AUTO_INCREMENT 表示自动递增,PRIMARY KEY 表示主键(唯一且不能重复)。
  • ProductName 是产品名称,VARCHAR(100) 表示最多存储100个字符。
  • SalesAmount 是销售额,DECIMAL(15, 2) 表示最多15位数字,其中2位小数。
  • SalesDate 是销售日期,DATE 表示日期类型。

4. 插入示例数据

为了测试查询,我们需要往表里插入一些数据。

sql 复制代码
INSERT INTO Products (ProductName, SalesAmount, SalesDate)
VALUES
    ('产品A', 1200000.00, '2023-01-15'),
    ('产品B', 800000.00, '2023-02-20'),
    ('产品C', 1500000.00, '2023-03-10'),
    ('产品D', 900000.00, '2022-12-05');
  • INSERT INTO 是SQL语句,用于插入数据。
  • 这里插入了4条记录,分别是产品A、B、C、D的销售信息。

5. 查询今年销售额超过100万的产品

现在,我们需要编写SQL语句来查询"今年销售额超过100万的产品"。

sql 复制代码
SELECT ProductName, SalesAmount, SalesDate
FROM Products
WHERE SalesAmount > 1000000 AND YEAR(SalesDate) = YEAR(CURDATE());
  • SELECT 是SQL语句,用于查询数据。
  • ProductName, SalesAmount, SalesDate 是要显示的字段。
  • FROM Products 表示从Products表中查询。
  • WHERE 是条件语句:
    • SalesAmount > 1000000 表示销售额超过100万。
    • YEAR(SalesDate) = YEAR(CURDATE()) 表示销售日期是今年的(CURDATE() 获取当前日期,YEAR() 提取年份)。

6. 运行结果

假设当前年份是2023年,运行上面的查询语句后,结果可能是:

ProductName SalesAmount SalesDate
产品A 1200000.00 2023-01-15
产品C 1500000.00 2023-03-10
  • 只有产品A和产品C满足条件(销售额超过100万且是今年的销售记录)。

总结

  1. 创建数据库:CREATE DATABASE SalesDB;
  2. 使用数据库:USE SalesDB;
  3. 创建表:CREATE TABLE Products (...);
  4. 插入数据:INSERT INTO Products (...);
  5. 查询数据:SELECT ... FROM Products WHERE ...;

通过以上步骤,你可以轻松创建一个数据库,并查询出今年销售额超过100万的产品。希望这个教程对你有帮助!如果有任何问题,欢迎随时提问! 😊

OpenAI o1 的回答:

当然!下面我将以一个简单易懂的方式,带你从零开始创建一个数据库,建立相关表格和字段,并最终编写SQL查询语句来显示所有今年销售额超过100万的产品。即使你是完全的数据库新手,也能跟随这个步骤逐步完成。

1. 安装和设置数据库管理系统(DBMS)

首先,你需要一个数据库管理系统(DBMS)来创建和管理你的数据库。常见的DBMS有:

  • MySQL
  • PostgreSQL
  • SQLite
  • Microsoft SQL Server

本教程将以MySQL为例,其他DBMS的操作类似。

1.1 下载和安装MySQL
  1. 访问 MySQL官方网站 下载适合你操作系统的安装包。
  2. 按照安装向导完成安装过程。
  3. 安装完成后,打开MySQL Workbench(图形化界面工具)或使用命令行工具进行操作。

2. 创建数据库

数据库是用来存储和管理数据的容器。在这个例子中,我们将创建一个名为SalesDB的数据库。

2.1 使用命令行创建数据库
sql 复制代码
CREATE DATABASE SalesDB;
2.2 使用MySQL Workbench创建数据库
  1. 打开MySQL Workbench并连接到你的MySQL服务器。
  2. 在左侧的"Navigator"面板中,右键点击"Schemas"。
  3. 选择"Create Schema..."。
  4. 输入数据库名称SalesDB,然后点击"Apply"完成创建。

3. 使用数据库

在创建好数据库后,你需要告诉MySQL你将要使用哪个数据库。

sql 复制代码
USE SalesDB;

4. 创建表格和字段

为了记录产品和销售数据,我们需要至少两个表:

  1. Products:存储产品信息。
  2. Sales:存储销售记录。
4.1 创建Products表
sql 复制代码
CREATE TABLE Products (
    ProductID INT AUTO_INCREMENT PRIMARY KEY,   -- 产品ID,自增主键
    ProductName VARCHAR(100) NOT NULL,         -- 产品名称
    Category VARCHAR(50),                       -- 产品类别
    Price DECIMAL(10,2)                         -- 产品价格
);

解释:

  • ProductID:每个产品的唯一标识,自动递增。
  • ProductName:产品的名称,不能为空。
  • Category:产品所属的类别。
  • Price:产品的价格,支持两位小数。
4.2 创建Sales表
sql 复制代码
CREATE TABLE Sales (
    SaleID INT AUTO_INCREMENT PRIMARY KEY,       -- 销售记录ID,自增主键
    ProductID INT,                               -- 产品ID,外键关联Products表
    SaleDate DATE,                               -- 销售日期
    Quantity INT,                                -- 销售数量
    TotalAmount DECIMAL(10,2),                   -- 销售总额
    FOREIGN KEY (ProductID) REFERENCES Products(ProductID) -- 外键约束
);

解释:

  • SaleID:每条销售记录的唯一标识,自动递增。
  • ProductID:关联到Products表的产品ID。
  • SaleDate:销售发生的日期。
  • Quantity:销售的数量。
  • TotalAmount:销售的总金额。

5. 插入示例数据

为了演示查询,我们需要向表中插入一些示例数据。

5.1 插入Products表数据
sql 复制代码
INSERT INTO Products (ProductName, Category, Price) VALUES
('智能手机', '电子产品', 5000.00),
('笔记本电脑', '电子产品', 8000.00),
('电动自行车', '交通工具', 15000.00),
('咖啡机', '家电', 1200.00),
('无线耳机', '电子产品', 800.00);
5.2 插入Sales表数据
sql 复制代码
INSERT INTO Sales (ProductID, SaleDate, Quantity, TotalAmount) VALUES
(1, '2025-01-05', 50, 250000.00),
(2, '2025-02-10', 30, 240000.00),
(3, '2025-03-15', 10, 150000.00),
(4, '2025-04-20', 100, 120000.00),
(5, '2025-05-25', 200, 160000.00),
(1, '2024-12-15', 40, 200000.00),
(2, '2024-11-20', 25, 200000.00);

注意: 这里假设当前年份是2025年,插入了一些2025年和2024年的销售记录。

6. 编写SQL查询语句

现在,我们要编写一个SQL查询,来显示所有今年销售额超过100万的产品

6.1 确定"今年"

假设当前年份是2025年,我们需要筛选SaleDate在2025年的销售记录。

6.2 汇总销售额

我们需要按产品汇总今年的销售总额,并筛选出超过100万的产品。

6.3 完整的SQL查询
sql 复制代码
SELECT 
    p.ProductID,
    p.ProductName,
    SUM(s.TotalAmount) AS TotalSales
FROM 
    Products p
JOIN 
    Sales s ON p.ProductID = s.ProductID
WHERE 
    YEAR(s.SaleDate) = 2025
GROUP BY 
    p.ProductID, p.ProductName
HAVING 
    SUM(s.TotalAmount) > 1000000;

解释:

  • SELECT:选择要显示的列,包括产品ID、产品名称和销售总额。
  • FROM Products p JOIN Sales s ON p.ProductID = s.ProductID :连接ProductsSales表,通过ProductID关联。
  • WHERE YEAR(s.SaleDate) = 2025:筛选销售日期在2025年的记录。
  • GROUP BY p.ProductID, p.ProductName:按产品分组,汇总每个产品的销售额。
  • HAVING SUM(s.TotalAmount) > 1000000:筛选出销售总额超过100万的产品。

7. 执行查询并查看结果

在MySQL Workbench或命令行工具中运行上述查询,你将得到所有今年(2025年)销售额超过100万的产品列表。

示例输出:

ProductID ProductName TotalSales
1 智能手机 250000.00
2 笔记本电脑 240000.00
3 电动自行车 150000.00
4 咖啡机 120000.00
5 无线耳机 160000.00

注意: 根据插入的数据,上述示例中没有任何产品的销售额超过100万,因此实际结果可能为空。为了达到超过100万的条件,你可以增加更多的销售记录或调整TotalAmount的值。

8. 完整的SQL脚本

以下是从创建数据库到执行查询的完整SQL脚本,供你参考和练习:

sql 复制代码
-- 1. 创建数据库
CREATE DATABASE SalesDB;

-- 2. 使用数据库
USE SalesDB;

-- 3. 创建Products表
CREATE TABLE Products (
    ProductID INT AUTO_INCREMENT PRIMARY KEY,
    ProductName VARCHAR(100) NOT NULL,
    Category VARCHAR(50),
    Price DECIMAL(10,2)
);

-- 4. 创建Sales表
CREATE TABLE Sales (
    SaleID INT AUTO_INCREMENT PRIMARY KEY,
    ProductID INT,
    SaleDate DATE,
    Quantity INT,
    TotalAmount DECIMAL(10,2),
    FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
);

-- 5. 插入Products表数据
INSERT INTO Products (ProductName, Category, Price) VALUES
('智能手机', '电子产品', 5000.00),
('笔记本电脑', '电子产品', 8000.00),
('电动自行车', '交通工具', 15000.00),
('咖啡机', '家电', 1200.00),
('无线耳机', '电子产品', 800.00);

-- 6. 插入Sales表数据
INSERT INTO Sales (ProductID, SaleDate, Quantity, TotalAmount) VALUES
(1, '2025-01-05', 50, 250000.00),
(2, '2025-02-10', 30, 240000.00),
(3, '2025-03-15', 10, 150000.00),
(4, '2025-04-20', 100, 120000.00),
(5, '2025-05-25', 200, 160000.00),
(1, '2024-12-15', 40, 200000.00),
(2, '2024-11-20', 25, 200000.00);

-- 7. 查询今年销售额超过100万的产品
SELECT 
    p.ProductID,
    p.ProductName,
    SUM(s.TotalAmount) AS TotalSales
FROM 
    Products p
JOIN 
    Sales s ON p.ProductID = s.ProductID
WHERE 
    YEAR(s.SaleDate) = 2025
GROUP BY 
    p.ProductID, p.ProductName
HAVING 
    SUM(s.TotalAmount) > 1000000;

总结

通过以上步骤,你已经成功:

  1. 创建了一个名为SalesDB的数据库
  2. 建立了两个表格Products(产品信息)和Sales(销售记录)。
  3. 插入了示例数据到这两个表中。
  4. 编写并执行了一个SQL查询,以显示今年销售额超过100万的产品。

进一步学习建议

  • 学习SQL基础语法 :了解更多SQL语句,如UPDATEDELETEALTER等。
  • 了解数据库设计原则:学习如何设计高效、规范的数据库结构。
  • 实践更多查询:尝试编写不同类型的查询,如多表连接、子查询、窗口函数等。
  • 使用图形化工具:如MySQL Workbench,可以帮助你更直观地管理和查询数据库。

希望这个指南对你有所帮助,祝你在学习SQL和数据库管理的旅程中取得成功!

End:

o1还是全面一点,全面数据资料丰富的o1,但是永远支持开源,为DeepSeek👏鼓掌👏👏,希望有业余时间的小伙伴也可以参与DeepSeek编码,让开源变得更好!!

相关推荐
马甲是掉不了一点的<.<9 分钟前
详解数据增强中的平移shft操作
图像处理·人工智能·计算机视觉·数据增强·图像平移
ningaiiii10 分钟前
深度学习中的EMA技术:原理、实现与实验分析
人工智能·深度学习
小陈phd13 分钟前
深度学习从入门到实战——卷积神经网络原理解析及其应用
人工智能·python·深度学习
AnyaPapa26 分钟前
大语言模型训练
人工智能·语言模型·自然语言处理
大力财经37 分钟前
抖音生活服务举办直营服务商年度峰会 服务商支付交易额同比涨85%
大数据·人工智能·生活
一水鉴天41 分钟前
为AI聊天工具添加一个知识系统 之29 pom(Project ObjectModel ):中间层的proxy server的SPI模型
人工智能
itwangyang5201 小时前
AIDD-人工智能药物设计-3DSMILES-GPT:基于词元化语言模型的3D分子生成
人工智能·gpt·3d
熙曦Sakura1 小时前
【深度学习】数据操作入门
人工智能·深度学习
码上飞扬1 小时前
深入探索AI核心模型:CNN、RNN、GAN与Transformer
人工智能·rnn·cnn·gan
取个名字真难呐1 小时前
Masked_Filled随机置列为零
人工智能·pytorch·深度学习