SQL查詢
本提示旨在展示如何根據給定的自然語言請求,生成相應的SQL查詢。假設數據庫中存在特定的表格和列,通過解析用戶的請求,將能夠自動生成相應的查詢語句,這對於數據分析、報告生成和數據挖掘等場景都具有重要意義。這種技能的應用,可以讓更多的人無需深厚的技術背景,就能有效地利用數據資源。
適用對象
指令
將以下自然語言請求轉換為有效的SQL查詢。假設存在一個包含以下表格和列的數據庫:
Customers:
– customer_id (INT, PRIMARY KEY)
– first_name (VARCHAR)
– last_name (VARCHAR)
– email (VARCHAR)
– phone (VARCHAR)
– address (VARCHAR)
– city (VARCHAR)
– state (VARCHAR)
– zip_code (VARCHAR)
Products:
– product_id (INT, PRIMARY KEY)
– product_name (VARCHAR)
– description (TEXT)
– category (VARCHAR)
– price (DECIMAL)
– stock_quantity (INT)
Orders:
– order_id (INT, PRIMARY KEY)
– customer_id (INT, FOREIGN KEY REFERENCES Customers)
– order_date (DATE)
– total_amount (DECIMAL)
– status (VARCHAR)
Order_Items:
– order_item_id (INT, PRIMARY KEY)
– order_id (INT, FOREIGN KEY REFERENCES Orders)
– product_id (INT, FOREIGN KEY REFERENCES Products)
– quantity (INT)
– price (DECIMAL)
Reviews:
– review_id (INT, PRIMARY KEY)
– product_id (INT, FOREIGN KEY REFERENCES Products)
– customer_id (INT, FOREIGN KEY REFERENCES Customers)
– rating (INT)
– comment (TEXT)
– review_date (DATE)
Employees:
– employee_id (INT, PRIMARY KEY)
– first_name (VARCHAR)
– last_name (VARCHAR)
– email (VARCHAR)
– phone (VARCHAR)
– hire_date (DATE)
– job_title (VARCHAR)
– department (VARCHAR)
– salary (DECIMAL)
提供根據自然語言請求檢索數據的SQL查詢。
獲取已下訂單但未提供任何評論的客戶名單,以及他們在訂單上總共花費的金額。
輸出例子
根據您的要求,以下是將自然語言請求轉換為有效的SQL查詢:
“`sql
SELECT
c.customer_id,
c.first_name,
c.last_name,
SUM(o.total_amount) AS total_spent
FROM
Customers c
JOIN
Orders o ON c.customer_id = o.customer_id
LEFT JOIN
Reviews r ON c.customer_id = r.customer_id
WHERE
r.review_id IS NULL
GROUP BY
c.customer_id, c.first_name, c.last_name;
“`
### 查詢解釋:
1. **FROM 和 JOIN**:
– 從 `Customers` 表中選擇客戶資料。
– 使用 `JOIN` 連接 `Orders` 表,根據 `customer_id` 取得客戶的訂單資料。
– 使用 `LEFT JOIN` 連接 `Reviews` 表,以便找出沒有評論的客戶。
2. **WHERE 子句**:
– `WHERE r.review_id IS NULL` 確保只選擇沒有提供任何評論的客戶。
3. **GROUP BY 和聚合函數**:
– 使用 `GROUP BY` 根據客戶 ID、名字和姓氏進行分組。
– 使用 `SUM(o.total_amount)` 計算每個客戶總共花費的金額。
這個查詢將返回已下訂單但未提供任何評論的客戶名單以及他們在訂單上總共花費的金額。