template: quot_rule: | 必须对数据库名、表名、字段名、别名外层加双引号(")。 1. 点号(.)不能包含在引号内,必须写成 "schema"."table" 2. 即使标识符不含特殊字符或非关键字,也需强制加双引号 3. Redshift 默认将未加引号的标识符转为小写 limit_rule: | 当需要限制行数时,必须使用 LIMIT 或 FETCH FIRST 来限制行数(Redshift 兼容 PostgreSQL) 1. 标准写法:LIMIT 100 2. 可选写法:FETCH FIRST 100 ROWS ONLY other_rule: | 必须为每个表生成别名(不加AS) {multi_table_condition} 禁止使用星号(*),必须明确字段名 中文/特殊字符字段需保留原名并添加英文别名 函数字段必须加别名 百分比字段保留两位小数并以%结尾(使用ROUND+CONCAT) 避免与Redshift关键字冲突(如USER/GROUP/ORDER等) basic_example: | 📌 以下示例严格遵循中的 AWS Redshift 规范,展示符合要求的 SQL 写法与典型错误案例。 ⚠️ 注意:示例中的表名、字段名均为演示虚构,实际使用时需替换为用户提供的真实标识符。 🔍 重点观察: 1. 双引号包裹所有数据库对象的规范用法 2. 中英别名/百分比/函数等特殊字段的处理 3. 关键字冲突的规避方式 查询 TEST.SALES 表的前100条订单(含百分比计算) SELECT * FROM TEST.SALES LIMIT 100 -- 错误:未加引号、使用星号 SELECT "订单ID", "金额" FROM "TEST"."SALES" "t1" FETCH FIRST 100 ROWS ONLY -- 错误:缺少英文别名 SELECT COUNT("订单ID") FROM "TEST"."SALES" "t1" -- 错误:函数未加别名 SELECT "t1"."订单ID" AS "order_id", "t1"."金额" AS "amount", COUNT("t1"."订单ID") AS "total_orders", CONCAT(ROUND("t1"."折扣率" * 100, 2), '%') AS "discount_percent" FROM "TEST"."SALES" "t1" LIMIT 100 统计用户表 PUBLIC.USERS(含关键字字段user)的活跃占比 SELECT user, status FROM PUBLIC.USERS -- 错误:未处理关键字和引号 SELECT "user", ROUND(active_ratio) FROM "PUBLIC"."USERS" -- 错误:百分比格式错误 SELECT "u"."user" AS "user_account", CONCAT(ROUND("u"."active_ratio" * 100, 2), '%') AS "active_percent" FROM "PUBLIC"."USERS" "u" WHERE "u"."status" = 1 FETCH FIRST 1000 ROWS ONLY example_engine: AWS Redshift 1.0 example_answer_1: | {"success":true,"sql":"SELECT \"country\" AS \"country_name\", \"continent\" AS \"continent_name\", \"year\" AS \"year\", \"gdp\" AS \"gdp_usd\" FROM \"Sample_Database\".\"sample_country_gdp\" ORDER BY \"country\", \"year\"","tables":["sample_country_gdp"],"chart-type":"line"} example_answer_1_with_limit: | {"success":true,"sql":"SELECT \"country\" AS \"country_name\", \"continent\" AS \"continent_name\", \"year\" AS \"year\", \"gdp\" AS \"gdp_usd\" FROM \"Sample_Database\".\"sample_country_gdp\" ORDER BY \"country\", \"year\" LIMIT 1000 OFFSET 0","tables":["sample_country_gdp"],"chart-type":"line"} example_answer_2: | {"success":true,"sql":"SELECT \"country\" AS \"country_name\", \"gdp\" AS \"gdp_usd\" FROM \"Sample_Database\".\"sample_country_gdp\" WHERE \"year\" = '2024' ORDER BY \"gdp\" DESC","tables":["sample_country_gdp"],"chart-type":"pie"} example_answer_2_with_limit: | {"success":true,"sql":"SELECT \"country\" AS \"country_name\", \"gdp\" AS \"gdp_usd\" FROM \"Sample_Database\".\"sample_country_gdp\" WHERE \"year\" = '2024' ORDER BY \"gdp\" DESC LIMIT 1000 OFFSET 0","tables":["sample_country_gdp"],"chart-type":"pie"} example_answer_3: | {"success":true,"sql":"SELECT \"country\" AS \"country_name\", \"gdp\" AS \"gdp_usd\" FROM \"Sample_Database\".\"sample_country_gdp\" WHERE \"year\" = '2025' AND \"country\" = '中国'","tables":["sample_country_gdp"],"chart-type":"table"} example_answer_3_with_limit: | {"success":true,"sql":"SELECT \"country\" AS \"country_name\", \"gdp\" AS \"gdp_usd\" FROM \"Sample_Database\".\"sample_country_gdp\" WHERE \"year\" = '2025' AND \"country\" = '中国' LIMIT 1000 OFFSET 0","tables":["sample_country_gdp"],"chart-type":"table"}