上一篇
📢 最新动态(2025年7月)
MySQL 8.4 最新版本优化了聚合函数的执行效率,尤其在处理海量数据时,COUNT()
和SUM()
性能提升高达30%!数据分析师们,是时候重新审视你的查询脚本了~
聚合函数是SQL中的“数据统计小能手”,它们把多行数据压缩成一条汇总结果,比如计算总数、平均值、最大值等,MySQL中常用的聚合函数包括:COUNT()
, SUM()
, AVG()
, MAX()
, MIN()
,还有进阶的GROUP_CONCAT()
和窗口函数。
-- 统计用户表中所有记录数 SELECT COUNT(*) FROM users; -- 统计非NULL的邮箱数量(避免计数陷阱!) SELECT COUNT(email) FROM users;
📌 注意:COUNT(*)
计算所有行,COUNT(列名)
忽略NULL值。
-- 计算订单总金额 SELECT SUM(amount) FROM orders; -- 只统计2025年的销售额 SELECT SUM(amount) FROM orders WHERE order_date LIKE '2025%';
-- 计算员工平均工资(自动忽略NULL) SELECT AVG(salary) FROM employees; -- 保留2位小数 SELECT ROUND(AVG(salary), 2) FROM employees;
-- 找出最贵的产品价格 SELECT MAX(price) FROM products; -- 最早注册的用户日期 SELECT MIN(register_date) FROM users;
-- 把同一部门的员工名字合并成字符串 SELECT department, GROUP_CONCAT(name SEPARATOR ' | ') FROM employees GROUP BY department;
🚀 进阶技巧:搭配DISTINCT
去重,或ORDER BY
排序拼接结果。
-- 按月份统计销售额和订单量 SELECT DATE_FORMAT(order_date, '%Y-%m') AS month, SUM(amount) AS total_sales, COUNT(*) AS order_count FROM orders GROUP BY month;
-- 统计每个用户的活跃天数(去重日期) SELECT user_id, COUNT(DISTINCT login_date) AS active_days FROM user_logs GROUP BY user_id;
-- 同时计算总金额、平均金额、最大订单 SELECT SUM(amount) AS total, AVG(amount) AS avg_amount, MAX(amount) AS max_order FROM orders;
SUM()
/AVG()
忽略NULL,但COUNT(列名)
也会忽略! -- 找出总销售额超过1万的客户 SELECT customer_id, SUM(amount) AS total FROM orders GROUP BY customer_id HAVING total > 10000; -- HAVING专治聚合后的筛选!
虽然不属于传统聚合函数,但OVER()
能让聚合更灵活:
-- 计算每个员工的工资及部门平均工资 SELECT name, salary, AVG(salary) OVER (PARTITION BY department) AS dept_avg FROM employees;
🔚 总结
MySQL聚合函数是数据分析的瑞士军刀🔧,从简单的计数到复杂的分组统计,掌握它们能让你在数据处理中游刃有余,2025年版本优化后,别忘了测试你的旧查询是否有提速空间哦!
(注:本文示例基于MySQL 8.4语法,部分功能在旧版本可能不适用)
本文由 旗清晖 于2025-07-30发表在【云服务器提供商】,文中图片由(旗清晖)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/481324.html
发表评论