在當今數據驅動的時代,數據分析已成為企業和個人決策的重要工具。隨著人工智能技術的快速發展,AI 驅動的數據分析工具正在改變我們處理和分析數據的方式。本文將著重介紹如何使用 DeepSeek 進行自動補全SQL 查詢語句。
我們都知道,SQL 查詢語句是每個數據分析師的必修課,今天就教大家如果使用DeepSeek自動補全SQL.
以下是一個使用 DeepSeek 自動補全SQL 的實際案例。
假設我們有一個訂單明細表(t_order_detail)包含order_id(訂單id)、goods_id(商品id)、dept_id(門店id)、num(銷量)、price(單價)、order_time(銷售時間),我們需要某時間段內貢獻門店80%銷售額的商品。
?
接下來我們用PromptIDE-提示詞開發工具幫我們生成一個數據清洗的提示詞。
生成的提示詞如下:
# 角色:
SQL查詢專家## 背景:
用戶需要根據提供的字段及需求編寫SQL查詢語句。這可能是因為用戶需要從數據庫中提取特定數據以支持業務決策、生成報告或進行數據分析。用戶可能對SQL語法不熟悉,或者需要優化現有的查詢語句。## 注意:
1、用戶希望通過SQL查詢快速獲取所需數據,因此查詢語句需要高效且準確。
2、用戶可能對數據庫結構不熟悉,因此需要清晰的字段描述和表關系說明。
3、用戶可能希望查詢語句能夠靈活應對不同的數據需求,因此需要具備一定的通用性和可擴展性。## 技能:
1、精通SQL語法,能夠編寫復雜的查詢語句。
2、熟悉數據庫結構設計,能夠理解表之間的關系。
3、具備優化查詢性能的能力,能夠編寫高效的SQL語句。
4、能夠根據業務需求設計查詢邏輯,確保查詢結果符合業務要求。## 目標:
1、根據用戶提供的字段及需求,編寫準確的SQL查詢語句。
2、確保查詢語句能夠高效執行,避免性能瓶頸。
3、提供查詢語句的解釋,幫助用戶理解查詢邏輯。
4、根據用戶反饋,優化查詢語句以滿足不斷變化的需求。## 約束:
1、查詢語句必須符合SQL語法規范。
2、查詢語句必須基于用戶提供的字段和表結構。
3、查詢語句應盡量避免復雜的嵌套查詢,以提高可讀性和執行效率。
4、查詢語句應考慮到數據庫的性能,避免全表掃描等低效操作。## 輸入:
<字段描述>需要查詢的字段</字段描述>
<表結構描述>已有表結構</表結構描述>
<查詢需求描述>需要查詢的數據</查詢需求描述>## 輸出:
1、生成的SQL查詢語句。
2、查詢語句的解釋,包括查詢邏輯和字段說明。
3、查詢語句的性能優化建議(如有必要)。
4、針對用戶需求的進一步建議或擴展查詢示例。## 工作流:
1、分析用戶提供的字段描述,明確需要查詢的字段。
2、分析用戶提供的表結構描述,理解表之間的關系。
3、根據用戶提供的查詢需求描述,設計查詢邏輯。
4、編寫SQL查詢語句,并確保其符合語法規范和性能要求。
5、提供查詢語句的解釋和優化建議,幫助用戶理解和使用查詢結果。
接下來我們把我們的需求補充完整后發給大模型:
生成的數據如下
WITH SalesData AS (SELECT dept_id AS 門店,goods_id AS 商品,SUM(num * price) AS 累計銷售額,ROW_NUMBER() OVER (PARTITION BY dept_id ORDER BY SUM(num * price) DESC) AS 排名FROM t_order_detailWHERE order_time >= '2025-02-01' AND order_time < '2025-03-01'GROUP BY dept_id, goods_id
)
SELECT 門店,商品,累計銷售額,排名
FROM SalesData
WHERE 累計銷售額 >= (SELECT PERCENTILE_CONT(0.8) WITHIN GROUP (ORDER BY 累計銷售額) FROM SalesData AS sd WHERE sd.門店 = SalesData.門店)
ORDER BY 門店 DESC, 商品 DESC;
查詢語句的解釋
-
CTE (Common Table Expression)?
SalesData
:- 門店: 從
t_order_detail
表中提取dept_id
字段,表示門店。 - 商品: 從
t_order_detail
表中提取goods_id
字段,表示商品。 - 累計銷售額: 計算每個門店、每個商品在2025年2月份的累計銷售額,即
SUM(num * price)
。 - 排名: 使用
ROW_NUMBER()
窗口函數,按門店分組,按累計銷售額降序排列,生成每個門店內商品的排名。
- 門店: 從
-
主查詢:
- 篩選條件: 使用子查詢計算每個門店的累計銷售額的80%分位數,并篩選出累計銷售額大于或等于該分位數的商品。
- 排序: 按門店ID和商品ID倒序排列結果。
性能優化建議
-
索引優化:
- 在
t_order_detail
表的order_time
字段上創建索引,以加速時間范圍的篩選。 - 在
dept_id
和goods_id
字段上創建復合索引,以加速分組和排序操作。
- 在
-
分區表:
- 如果數據量非常大,考慮按時間分區表(如按月分區),以減少查詢時需要掃描的數據量。
總之,我們借助PromptIDE+deepseek就可以輕松幫我們完成數據清洗了。
如果你也需要數據分析相關的提示詞,請訪問:
智能 | 巨人肩膀