sql-useful-functions
SQL - 基本内置函数
Section titled “SQL - 基本内置函数”SQL 提供了丰富的内置函数库,用于直接在查询中执行计算、处理数据和格式化结果。理解这些函数是编写高效、强大 SQL 的关键。它们可以大致分为几个类别。
1. 聚合函数
Section titled “1. 聚合函数”聚合函数对一组行进行操作,返回单个汇总值。它们最常与 GROUP BY 子句一起使用。
COUNT(column | *)- 计算行数。COUNT(*)计算所有行,而COUNT(column)计算该列中的非 NULL 值。SUM(column)- 计算列中所有数值的总和。AVG(column)- 计算列中所有数值的平均值。MIN(column)- 查找列中的最小值。MAX(column)- 查找列中的最大值。STRING_AGG(column, separator)(PostgreSQL/SQL Server) /GROUP_CONCAT(column)(MySQL) - 将多行中的字符串值连接成一个字符串。
2. 窗口函数
Section titled “2. 窗口函数”窗口函数是现代且强大的功能。它们对与当前行相关的表行集执行计算。与聚合函数不同,它们不会折叠行;它们根据 OVER() 子句定义的数据“窗口”为每一行返回一个值。
ROW_NUMBER()- 为分区内的每行分配一个从 1 开始的唯一整数。RANK() / DENSE_RANK()- 根据排序为每行分配一个排名。RANK()在出现并列后会在排名中留下空隙,而DENSE_RANK()则不会。LEAD(column, offset)- 访问同一结果集中后续行的数据,无需自连接。LAG(column, offset)- 访问同一结果集中前一行的数据。SUM(column) OVER (...)- 计算累积和或移动总计。
3. 字符串函数
Section titled “3. 字符串函数”这些函数用于操作字符串。
CONCAT(string1, string2, ...)- 连接两个或多个字符串。||运算符是常见的替代方法。LENGTH(string) / LEN(string)- 返回字符串中的字符数。UPPER(string) / LOWER(string)- 将字符串转换为大写或小写。SUBSTRING(string FROM start FOR length)- 提取字符串的一部分。TRIM([BOTH|LEADING|TRAILING] chars FROM string)- 移除字符串开头、结尾或两端的字符(默认为空格)。COALESCE(value1, value2, ...)- 返回列表中第一个非 NULL 值。对于提供默认值非常有用。
4. 数值函数
Section titled “4. 数值函数”这些函数执行数学运算。
ROUND(number, decimals)- 将数字四舍五入到指定的小数位数。CEIL(number) / CEILING(number)- 将数字向上舍入到最接近的整数。FLOOR(number)- 将数字向下舍入到最接近的整数。ABS(number)- 返回数字的绝对值(非负值)。RAND() / RANDOM()- 生成一个随机浮点数(行为因数据库而异)。
5. 日期和时间函数
Section titled “5. 日期和时间函数”这些函数对于处理时间数据至关重要。
CURRENT_TIMESTAMP / NOW()- 返回数据库服务器的当前日期和时间。CURRENT_DATE / CURRENT_TIME- 返回当前日期或时间。EXTRACT(part FROM date)- 从日期中提取一部分(例如,YEAR、MONTH、DAY)。DATE_ADD() / DATE_SUB()(MySQL) 或时间间隔算术 (PostgreSQL) - 从日期中添加或减去一个时间间隔。示例:order_date + INTERVAL '30 days'。