狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

10個高級的SQL查詢方法

admin
2024年3月30日 13:12 本文熱度 699

SQL 是管理和分析關系數據庫的基本工具。掌握基本的SQL命令能夠完成簡單的數據查詢和操作,但是如果想從數據中提取更有價值的信息,數據分析工作者和開發人員應該深入學習和掌握高級的SQL技巧。

1 窗口函數

窗口函數是指在SQL查詢中對一組相關行進行聚合或運算操作的函數。窗口函數可以在不改變基本表的情況下,為查詢結果添加額外的計算列。舉個例子,使用SUM()函數與OVER()子句計算銷售額的運行總和。

SELECT date, sales,
       SUM(sales) OVER (ORDER BY dateAS running_total
FROM sales_data;

2 公共表表達式(CTEs)

CTE(Common Table Expressions,公共表表達式)是一種在SQL查詢中創建臨時結果集的方法,可以被多次引用,提高查詢的可讀性和可維護性。以下是如何使用CTE計算每個產品類別的總收入的示例。

WITH category_revenue AS (
    SELECT categorySUM(revenue) AS total_revenue
    FROM sales
    GROUP BY category
)
SELECT * FROM category_revenue;

3 遞歸查詢

遞歸查詢能夠幫助分析師遍歷層次化數據結構,如組織圖或物料清單。假設這里有一個表示員工關系的表,想查找某個經理的所有下屬:

WITH RECURSIVE subordinates AS (
    SELECT employee_id, name, manager_id
    FROM employees
    WHERE manager_id = 'manager_id_of_interest'
    UNION ALL
    SELECT e.employee_id, e.name, e.manager_id
    FROM employees e
    JOIN subordinates s ON e.manager_id = s.employee_id
)
SELECT * FROM subordinates;

4 透視表

透視表將行轉換為列,以表格形式匯總數據。比如,有一個包含銷售數據的表格,想通過數據透視來顯示每個產品在不同月份的總銷售額:

SELECT *
FROM (
    SELECT product, month, sales
    FROM sales_data
AS source_table
PIVOT (
    SUM(sales)
    FOR month IN ('Jan''Feb''Mar''Apr''May')
AS pivot_table;

5 分析函數

分析函數根據一組記錄計算匯總值。例如,可以使用 ROW_NUMBER() 函數為數據集中的每條記錄分配唯一的行號。

SELECT customer_id, order_id,
       ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date) AS order_rank
FROM orders;

6 解透視

解透視是透視操作的反向操作,解透視是將一張表中的列轉換為行,而透視是將行轉換為列。比如,這里有一個按月匯總銷售數據的表格,想取消透視以分析隨時間變化的趨勢。

SELECT product, month, sales
FROM (
    SELECT 'Jan' AS month, product, sales_jan AS sales FROM sales_data
    UNION ALL
    SELECT 'Feb' AS month, product, sales_feb AS sales FROM sales_data
    UNION ALL
    SELECT 'Mar' AS month, product, sales_mar AS sales FROM sales_data
AS unpivoted_sales;

7 條件聚合

條件聚合是指根據指定條件應用條件聚合函數。例如,如果想計算老客戶訂單的平均銷售額:

SELECT customer_id, 
       AVG(CASE WHEN order_count > 1 THEN order_total ELSE NULL ENDAS avg_sales_repeat_customers
FROM (
    SELECT customer_id, COUNT(*) AS order_count, SUM(order_total) AS order_total
    FROM orders
    GROUP BY customer_id
AS customer_orders;

8 日期函數

SQL中的日期函數支持操縱和提取與日期相關的信息。例如,可以使用DATE_TRUNC()函數按月對銷售數據進行分組。

SELECT DATE_TRUNC('month', order_date) AS monthSUM(sales_amount) AS total_sales
FROM sales
GROUP BY DATE_TRUNC('month', order_date);

9 合并語句

并語句(也稱為 UPSERT 或 ON DUPLICATE KEY UPDATE)可讓分析師根據與源表的連接結果在目標表中插入、更新或刪除記錄。比如,要同步兩個包含客戶數據的表。

MERGE INTO target_table AS t
USING source_table AS s
ON t.customer_id = s.customer_id
WHEN MATCHED THEN
    UPDATE SET t.name = s.name, t.email = s.email
WHEN NOT MATCHED THEN
    INSERT (customer_id, name, email) VALUES (s.customer_id, s.name, s.email);

10 情況語句

情況語句支持在SQL查詢中應用條件邏輯。例如,使用情況語句根據客戶的總購買金額對其進行分類。

SELECT customer_id,
       CASE
           WHEN total_purchase_amount >= 1000 THEN 'Platinum'
           WHEN total_purchase_amount >= 500 THEN 'Gold'
           ELSE 'Silver'
       END AS customer_category
FROM (
    SELECT customer_id, SUM(order_total) AS total_purchase_amount
    FROM orders
    GROUP BY customer_id
AS customer_purchases;

該文章在 2024/3/30 13:12:37 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved