SELECT语句结合函数可实现聚合统计、数学运算、条件判断、日期和字符串处理,如SUM、AVG、COUNT进行分组计算,ROUND控制精度,CASE实现逻辑分支,DATEDIFF计算时间差,CONCAT和SUBSTRING_INDEX处理文本,通过合理组合函数在数据库层高效完成复杂数据转换与分析任务。
在 SQL 查询中,SELECT 语句结合函数可以实现各种复杂计算,比如聚合、数学运算、字符串处理、日期操作等。通过将内置函数或自定义函数嵌套在 SELECT 中,能灵活地从原始数据中提取出有意义的结果。
使用聚合函数进行统计计算
聚合函数用于对一组值执行计算并返回单个值,常用于分组分析:
- SUM():计算某列的总和,例如统计每个部门的工资总额:
SELECT dept_id, SUM(salary) AS total_salary FROM employees GROUP BY dept_id; - AVG():求平均值,可用于分析客户订单平均金额:
SELECT AVG(order_amount) AS avg_order FROM orders; - COUNT():统计行数,如统计每个产品类别的商品数量:
SELECT category, COUNT(*) AS product_count FROM products GROUP BY category;
结合数学与条件函数处理数值
利用数学函数和条件表达式,可以在查询时动态生成计算字段:
- 使用 ROUND() 控制小数位数,例如保留两位小数:
SELECT product_name, ROUND(price * 1.1, 2) AS price_with_tax FROM products; - 用 CASE 实现条件逻辑,比如根据销售额划分等级:
SELECT name, sales,
CASE
WHEN sales > 10000 THEN 'High'
WHEN sales > 5000 THEN 'Medium'
ELSE 'Low'
END AS performance_level
FROM sales_team;
日期和字符串函数辅助业务计算
实际应用中,常需基于时间或文本信息推导结果:
- 计算客户年龄或订单间隔时间:
SELECT name, DATEDIFF(CURDATE(), birth_date) / 365 AS age FROM customers; - 格式化姓名或提取邮箱域名:
SELECT CONCAT(UPPER(last_name), ', ', first_name) AS formatted_name,
SUBSTRING_INDEX(email, '@', -1) AS domain
FROM users;
基本上就这些。只要理解函数的作用和组合方式,就能在 SELECT 中完成大多数常见复杂计算任务,无需依赖程序层处理。关键是合理搭配函数与表达式,让数据库高效完成数据转换。