logo

基于sqlcoder_7b生成sql语句

其prompt为markdown格式,中文版本prompt如下:

  
  
  
  
  
  
### Task
生成一个SQL来回答如下问题:
`上一周按照产品分组查询各个产品的总计收入是多少?`

### Database Schema
查询语句基于如下使用字符串描述的数据库:CREATETABLE products (
product_id INTEGERPRIMARY KEY,-- 每个产品的唯一ID
name VARCHAR(50),-- 产品名称
price DECIMAL(10,2),-- 产品价格
quantity INTEGER -- 当前库存量
);CREATETABLE customers (
customer_id INTEGERPRIMARY KEY,-- 每个客户端唯一ID
name VARCHAR(50),-- 客户姓名
address VARCHAR(100)-- 客户端email地址
);CREATETABLE salespeople (
salesperson_id INTEGERPRIMARY KEY,-- 每个销售人员ID
name VARCHAR(50),-- 销售人员姓名
region VARCHAR(50)-- 销售人员的地理销售区域,也就是销售员的负责区域
);CREATETABLE sales (
sale_id INTEGERPRIMARY KEY,-- 每笔销售订单的ID
product_id INTEGER,-- 售出的商品ID
customer_id INTEGER,-- 购买的客户ID
salesperson_id INTEGER,-- 销售人员ID
sale_date DATE,-- 销售日期
quantity INTEGER -- 产品的售出数量
);CREATETABLE product_suppliers (
supplier_id INTEGERPRIMARY KEY,-- 供应商ID
product_id INTEGER,-- 供应商的产品ID
supply_price DECIMAL(10,2)-- 供应商的单价
);-- sales.product_id 可以和 products.product_id进行连接
-- sales.customer_id 可以和customers.customer_id进行连接
-- sales.salesperson_id 可以和 salespeople.salesperson_id进行连接
-- product_suppliers.product_id 可以和 products.product_id进行连接

### SQL
通过以上给定的数据库描述,我再重复一遍编写SQL查询语句来回答 `上一周按照产品分组查询各个产品的总计收入是多少?`:
```sql

在使用sqlcoder_7b模型,在prompt输入如上信息,输出:
默认为语法是 PostgreSQL ,输出如下SQL查询语句:
```
SELECT p.name, SUM(s.quantity * ps.supply_price) AS total_revenue FROM products p JOIN sales s ON p.product_id = s.product_id JOIN product_suppliers ps ON p.product_id = ps.product_id WHERE s.sale_date >= (CURRENT_DATE - interval '1 week') GROUP BY p.name;
```
我自己格式化后的效果:
```
SELECT
p.name,
SUM(s.quantity * ps.supply_price) AS total_revenue
FROM
products p
JOIN
sales s
ON
p.product_id = s.product_id
JOIN
product_suppliers ps
ON
p.product_id = ps.product_id
WHERE
s.sale_date >= (CURRENT_DATE - INTERVAL '1 week')
GROUP BY
p.name;
```
我让它生成MySQL语法的他不会,还是输出PGsql的语句,可以自己找sql翻译工具进行转换,相信通过不断增加MySQL的训练数据进行训练,它支持MySQL语法指日可待。
评论
用户头像