首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 資料查詢進階技巧:UNION、TOP、聚合與排序實戰

     編輯:關於SqlServer

資料查詢是 SQL 開發的核心技能。本文從基礎查詢延伸至進階技巧,涵蓋欄位重命名、常數欄位、TOP 百分比查詢、去重複、聚合函數、BETWEEN 篩選、UNION 結果集合併與 ORDER BY 進階排序,附完整範例碼供參考。

一、基礎查詢技巧

1. 欄位重命名 (Alias)

SELECT name AS '姓名' FROM 表名;

2. 定義常數欄位

SELECT 是否 = '是' FROM 表名;

3. TOP 子句與百分比查詢

-- 取前 20% 筆資料
SELECT TOP 20 PERCENT * FROM 表名;

4. 去除重複列 (DISTINCT)

SELECT DISTINCT 欄位名 FROM 表名;

5. 聚合函數應用

常用聚合函數:MAX、AVG、COUNT、MIN、SUM。

單一結果集回傳多個聚合值:

SELECT
    最大年齡 = (SELECT MAX(age) FROM 表名),
    最小年齡 = (SELECT MIN(age) FROM 表名);

6. BETWEEN 範圍篩選

SELECT * FROM 表 WHERE 欄位 BETWEEN 5 AND 6;

二、UNION 結果集合併

UNION 可將兩個結果集垂直合併,並自動去除重複列(UNION ALL 保留重複)。

實戰案例:各年齡薪資明細加總計列

SELECT
    CONVERT(VARCHAR(10), [age]) AS 年齡,
    SUM([salary]) AS 薪資
FROM 員工表
GROUP BY age

UNION

SELECT
    '總計' AS 年齡,
    SUM(salary) AS 薪資
FROM 員工表;

關鍵限制: 兩個結果集的欄位數量、順序與資料型別必須對應。範例中將 age 轉為 VARCHAR,以符合 '總計' 字串型別。

三、ORDER BY 進階排序

ORDER BY 不僅支援單一欄位,也支援運算式排序:

SELECT *
FROM 表
ORDER BY (age + salary) / 2.0 DESC;

效能與可讀性建議

  • 大量資料合併優先考慮 UNION ALL,避免去重複的排序開銷。
  • 排序運算式若過於複雜,建議使用 CTE 或子查詢預先計算,提升可讀性。
  • TOP N PERCENT 適合抽樣分析,但不保證確切筆數。

靈活運用這些查詢技巧,能以更少的程式碼完成複雜的資料轉換與報表需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved