SQL Server 常见函数详解
SQL Server 常见函数详解
在 SQL Server 中,有许多常用的函数可以帮助我们进行数据处理、计算和格式化。本文整理了一些重要的 SQL Server 函数,包括 ROUND、LAG、OVER、MERGE 等,方便学习和参考。
1. ROUND 函数
功能
ROUND 用于对数值进行四舍五入或截断。
语法
ROUND ( 数值, 保留小数位数 [, 运算方式] )
数值:要处理的数值。
保留小数位数:决定保留的小数位数,正数表示保留小数,负数表示对整数部分进行四舍五入。
运算方式(可选):
0(默认)→ 四舍五入。
1 → 直接截断(不进位)。
示例
SELECT ROUND(123.456, 2); -- 结果:123.46
SELECT ROUND(123.456, -1); -- 结果:120
SELECT ROUND(123.789, 2, 1); -- 结果:123.78 (截断,不进位)
2. LAG 函数
功能
LAG 用于获取前 N 行的值,通常用于计算环比、时间序列分析等。
语法
LAG(列名, 偏移量, 默认值) OVER (PARTITION BY 分组列 ORDER BY 排序列)
列名:要获取前一行值的列。
偏移量:获取相对于当前行之前的第 N 行数据,默认为 1。
默认值:如果没有前 N 行数据,则返回默认值。
示例
SELECT
report_date,
shipment_count,
LAG(shipment_count, 1) OVER (PARTITION BY F_CompanyId ORDER BY report_date) AS prev_shipment
FROM shipment_stats;
🔹 这个查询会返回 上一天的出货量。
3. OVER 关键字
功能
OVER 关键字用于窗口函数,指定数据如何进行分组和排序。
示例
SELECT
employee_id,
department_id,
salary,
AVG(salary) OVER (PARTITION BY department_id) AS avg_salary_per_dept
FROM employees;
🔹 这个查询计算每个部门的平均工资,而不会影响原始数据的展示。
4. MERGE 语句(UPSERT 操作)
功能
MERGE 允许你同时进行 INSERT、UPDATE 和 DELETE 操作,非常适合批量更新数据。
语法
MERGE INTO 目标表 AS target
USING 源数据 AS source
ON target.匹配列 = source.匹配列
WHEN MATCHED THEN
UPDATE SET target.列名 = source.列名
WHEN NOT MATCHED THEN
INSERT (列1, 列2) VALUES (source.列1, source.列2);
示例
MERGE INTO users AS target
USING users_temp AS source
ON target.id = source.id
WHEN MATCHED THEN
UPDATE SET target.age = source.age
WHEN NOT MATCHED THEN
INSERT (id, name, age) VALUES (source.id, source.name, source.age);
🔹 这个查询会 更新已存在的用户,插入不存在的用户。
5. 如何在 SQL Server 中进行浮点数计算
在 SQL Server 中,整数除法会自动截断小数。
示例
SELECT -169 / 364; -- 结果:0(整数除法,截断小数)
SELECT -169.0 / 364; -- 结果:-0.464285714...
SELECT CAST(-169 AS DECIMAL(10,4)) / 364; -- 结果:-0.4643
如果你只想返回 -0.46,可以使用:
SELECT CAST(ROUND(-169.0 / 364, 2) AS DECIMAL(10,2)); -- 结果:-0.46
总结
函数/关键字作用
ROUND
四舍五入或截断数值
LAG
获取前 N 行数据
OVER
用于窗口函数,进行分组和排序
MERGE
实现 UPSERT(有则更新,无则插入)
这些 SQL Server 函数和关键字在实际应用中非常重要,掌握它们可以提高数据库操作的效率。🚀
随便看看
- 2026-01-07 21:29:53《光环无限》问题集中贴 游戏闪退、黑屏、无限加载等解决方法
- 2026-02-02 23:47:57暗黑破坏神3 - 太极石传奇宝石
- 2025-05-31 17:24:30梦想大富翁:跨次元财富冒险季暨全民创富挑战赛2025盛夏狂欢季
- 2025-10-06 15:44:34小学生如何练好汉字?练字技巧与常见误区
- 2025-12-23 04:31:41希腊旅游攻略大全, 希腊自助游攻略大全【携程旅游】
- 2026-08-30 18:13:16經典不敗!10個韓國「三人組」KPOP小分隊,K.R.Y.、夫碩順都是代表!
- 2025-04-30 02:45:45魔物狩猎者2025春季大型狩猎狂欢节:挑战极限,赢取稀有奖励!
- 2025-10-01 19:59:10刘国梁不装了!外协集体不派主力来华参赛,直接甩王炸让他们后悔
- 2026-07-28 10:46:334个iPhone自带修图功能,编辑照片很好用
- 2025-10-15 15:21:08御剑情缘新服开服多少天合区 跨服几个服一起
