使用数据问答中的SQL模板功能时,可参考此文档进行SQL语句编写。
SQL语句编写入口
进入智能对话机器人空间产品界面后,选择表格管理>SQL模板,单击新建SQL模板按钮,即可在新建SQL模板窗口编写SQL语句。
当机器人无法正确地将用户自然语言转化为SQL语句,可通过手动编写有关用户问句对应的SQL语句,进行自然语言到SQL语句的人工干预,优化问答效果。
本模块主要涉及面向数据库执行查询的SQL。
SQL语句编写规则与示例
规则介绍
SQL对大小写不敏感,大小写均支持。
SELECT语句:用于从数据库中选取数据。
SELECT DISTINCT语句:用于返回唯一不同的值。
WHERE语句:用于过滤记录。
AND & OR 运算符:用于基于一个以上的条件对记录进行过滤。
ORDER BY:关键字用于对结果集进行排序。
SELECT TOP:子句用于规定要返回的记录的数目。
LIKE:操作符用于在 WHERE 子句中搜索列中的指定模式。
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 |