SQL语句示例

使用数据问答中的SQL模板功能时,可参考此文档进行SQL语句编写。

SQL语句编写入口

进入智能对话机器人空间产品界面后,选择表格管理>SQL模板,单击新建SQL模板按钮,即可在新建SQL模板窗口编写SQL语句。

说明
  • 当机器人无法正确地将用户自然语言转化为SQL语句,可通过手动编写有关用户问句对应的SQL语句,进行自然语言到SQL语句的人工干预,优化问答效果。

  • 本模块主要涉及面向数据库执行查询的SQL。

image

SQL语句编写规则与示例

规则介绍

  1. SQL对大小写不敏感,大小写均支持。

  2. SELECT语句:用于从数据库中选取数据。

  3. SELECT DISTINCT语句:用于返回唯一不同的值。

  4. WHERE语句:用于过滤记录。

  5. AND & OR 运算符:用于基于一个以上的条件对记录进行过滤。

  6. ORDER BY:关键字用于对结果集进行排序。

  7. SELECT TOP:子句用于规定要返回的记录的数目。

  8. LIKE:操作符用于在 WHERE 子句中搜索列中的指定模式。

  9. BETWEEN:操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。

编写示例

能力

解释

示例问题

示例SQL

单/多列查询

SELECT多column

列出油耗大于8但是功率低于200的名称和价格。

SELECT 产品名称, 零售价 FROM 汽车 WHERE ( 综合耗油量 > "8" ) AND ( 功率 < "200" )

聚合函数查询

SELECT子句支持选择不同的聚合函数,包括:COUNT、SUM、AVG、MAX、MIN等

金奖的获奖记录是什么,获奖时间的最晚值是多少?

SELECT 获奖记录, MAX(获奖时间) FROM 获奖记录表 WHERE 获得奖项 = '金奖' GROUP BY 获奖记录"

值比较条件

WHERE子句支持等于、大于、小于、不等于运算符

学位为学士,审查通过人数大于20小于30的招考人数是多少

SELECT 招考人数 FROM 招考信息表 WHERE 审查通过人数 > 20 AND 审查通过人数 < 30 AND 学位 = '学士'

多条件并存

WHERE子句支持多个条件以AND或OR的形式组合查询

长江流域和珠江流域的水库库容总量是多少?

SELECT SUM(库容) FROM 水库 WHERE 所在流域 = "长江" OR 所在流域="珠江"

自动补充列名

查询列名=值的情况下,用户可以省略列名

计算机或者成绩优秀的同学有哪些?学号是多少?

SELECT 学号, 学位 FROM 学生信息 WHERE 专业名称="计算机" OR 成绩="优秀"

泛化能力

对于列名的询问不要求完全匹配表格中的列名

油耗低于5的suv有哪些?

SELECT 产品名称 FROM 汽车 WHERE ( 汽车类型 == "suv" ) AND ( 综合耗油量 < "5" )

TOP N

排名最好或最差的N个排名

2023年销售最好的10个省份。

SELECT 省区 FROM (SELECT 省区 FROM ai_libai_dealer_sales WHERE YEAR(日期) = '2023' ORDER BY 销售金额 DESC LIMIT 10) AS sales_states ORDER BY 销售金额 DESC

环比

当前周期与上一个周期的数据变化情况

经销商"毛龙"今年第一季度的销售总额同比增长了多少?

SELECT (Q3_sales - Q2_sales) / Q2_sales AS QoQ_growth FROM (SELECT SUM(CASE WHEN QUARTER(日期) = 2 THEN 销售金额 ELSE 0 END) AS Q2_sales,SUM(CASE WHEN QUARTER(日期) = 3 THEN 销售金额 ELSE 0 END) AS Q3_sales FROM ai_libai_dealer_sales WHERE YEAR(日期) = YEAR(CURRENT_DATE) - 1 AND 省区 = '四川' AND QUARTER(日期) IN (2, 3)) AS subquery

同比

当前周期相对于历史同一时间段的数据变化情况

经销商"毛龙"今年第一季度的销售总额同比增长了多少?

SELECT (Q1_sales_this_year - Q1_sales_last_year) / Q1_sales_last_year AS YoY_growth FROM (SELECT SUM(CASE WHEN YEAR(日期) = YEAR(CURRENT_DATE) THEN 销售金额 ELSE 0 END) AS Q1_sales_this_year,SUM(CASE WHEN YEAR(日期) = YEAR(CURRENT_DATE) - 1 THEN 销售金额 ELSE 0 END) AS Q1_sales_last_year FROM ai_libai_dealer_sales WHERE 经销商名称 = '毛龙' AND QUARTER(日期) = 1) AS subquery