SQL 函数

71 阅读4分钟

函数

一、聚合函数 (Aggregate Functions)

SQL 中的聚合函数是一类用于对记录集 (Recordset) 中的数据进行计算和分析的函数。

1. COUNT 函数

COUNT 是 SQL 中最基础的聚合函数,主要用于计算指定列中值的数量。

用法:COUNT(column_name)

示例:计算 user_profile 表中所有记录的数量。

SELECT COUNT(*) FROM user_profile;

2. SUM 函数

SUM 函数用于计算某列中值的总和。

用法:SUM(column_name)

示例:计算 user_profile 表中所有用户的总GPA。

SELECT SUM(gpa) FROM user_profile;

3. AVG 函数

AVG 函数用于计算某列中值的平均值。

用法:AVG(column_name)

示例:计算 user_profile 表中所有用户的平均GPA。

SELECT AVG(gpa) FROM user_profile;

4. MAX 函数

MAX 函数用于计算某列中值的最大值。

用法:MAX(column_name)

示例:找出 user_profile 表中 GPA 值最高的记录。

SELECT * FROM user_profile WHERE gpa = (SELECT MAX(gpa) FROM user_profile);

5. MIN 函数

MIN 函数用于计算某列中值的最小值。

用法:MIN(column_name)

示例:找出 user_profile 表中 GPA 值最低的记录。

SELECT * FROM user_profile WHERE gpa = (SELECT MIN(gpa) FROM user_profile);

二、聚合函数 (String Functions)

SQL 中的字符串函数主要用于对字符串类型的数据进行处理,比如获取子字符串、转换字符串大小写等。

1. SUBSTRING 函数

SUBSTRING 函数用于返回一个字符串的子串。

用法:SUBSTRING(string_expression, start, length)

示例:从 user_profile 表中选出所有名字中包含“张”的用户。

SELECT * FROM user_profile WHERE SUBSTRING(name,1,1) = '张' ;

2. UPPER 函数

UPPER 函数用于将某个字符串转换为大写形式。

用法:UPPER(string_expression)

示例:将 user_profile 表中所有名字都转换为大写字母。

UPDATE user_profile SET name = UPPER(name);

3. LOWER 函数

LOWER 函数用于将某个字符串转换为小写形式。

用法:LOWER(string_expression)

示例:将 user_profile 表中所有名字都转换为小写字母。

UPDATE user_profile SET name = LOWER(name);

三、聚合函数 (Date and Time Functions)

SQL 中的日期和时间函数主要用于对时间戳类型的数据进行处理,比如格式化时间戳、获取时间间隔等。

1. GETDATE 函数

GETDATE 函数用于获取当前的系统时间。

用法:GETDATE()

示例:查看当前系统时间。

SELECT GETDATE();

2. DATEPART 函数

DATEPART 函数用于从一个时间类型的数据中提取某个特定的日期部分。

用法:DATEPART(datepart, date_expression)

示例:查看 user_profile 表中出生日期是哪个月的用户的数量。

SELECT COUNT(*) FROM user_profile WHERE DATEPART(month,birthday) = '6';

3. DATEDIFF 函数

DATEDIFF 函数用于计算时间间隔。

用法:DATEDIFF(interval, startdate, enddate)

示例:查看 user_profile 表中年龄在30岁以上的用户的数量。

SELECT COUNT(*) FROM user_profile WHERE DATEDIFF(year,birthday,GETDATE()) > 30;

四、聚合函数 (Logical Functions)

SQL 中的逻辑函数主要用于判断某个条件是否成立,并返回相应的结果。

1. IF 函数

IF 函数用于根据某个条件成立与否,返回不同的结果。

用法:IF(condition, value if true, value if false)

示例:统计 user_profile 表中女性和男性的数量。

SELECT COUNT(*) AS total, IF(gender = 'F', 'Female', 'Male') AS gender 
FROM user_profile 
GROUP BY gender;

2. CASE 函数

CASE 函数用于根据某个条件成立与否,返回不同的值。

用法:CASE WHEN condition THEN value1 ELSE value2 END

示例:将 user_profile 表中年龄大于等于 18 岁的用户标记为已成年,否则标记为未成年。

SELECT 
    name, 
    CASE WHEN DATEDIFF(YEAR, birthday, GETDATE()) >= 18 
        THEN 'Adult' 
        ELSE 'Minor' 
    END AS age_status 
FROM user_profile;

条件和循环语句

  1. IF 语句: 在 SQL 中,可以使用 CASE 表达式来实现类似 if 的条件判断功能。下面是一个示例:
SELECT 
    column1, column2,
    CASE
        WHEN condition1 THEN result1
        WHEN condition2 THEN result2
        ELSE result3
    END AS alias_name
FROM
    table_name;

在以上语句中,根据条件 condition1 和 condition2,选择结果 result1 和 result2,并将之作为别名 alias_name 返回。

  1. FOR/WHILE 循环: SQL 并不直接提供传统的 for/while 循环语句,但可以使用 WHILE 循环或者递归来实现类似的循环功能。

使用 WHILE 循环示例:

DECLARE @counter INT;
SET @counter = 1;
WHILE @counter <= 10
BEGIN
    -- 循环体内的语句
    -- 可以使用 BREAK 来跳出循环
    -- 可以使用 CONTINUE 跳过当前循环,进入下一次循环
    SET @counter = @counter + 1;
END

在以上示例中,设置一个计数器变量 @counter,通过判断 @counter 的值决定是否进行循环,循环体内的语句可以执行多次,直到满足循环终止条件为止。