Excel与SQL数据分析:数据运算全面对比(第三篇)
基础聚合函数:SUM()、AVERAGE()、COUNT()、MAX()、MIN()· 舍入:ROUND()、ROUNDUP()、ROUNDDOWN()、INT()· 基础:SUM()、AVERAGE()、MIN()、MAX()· 聚合函数:SUM()、AVG()、MIN()、MAX()· 逻辑函数:AND()、OR()、NOT()、XOR()· 其他:MOD()、ABS()、SQRT()、LOG
Excel与SQL数据分析:数据运算全面对比(第三篇)
➕ 算术运算
Excel操作方式:
· 基本运算符:+(加)、-(减)、(乘)、/(除)、^(幂)
· 单元格引用:=A1+B1、=C2D2
· 相对/绝对引用:=$A$1*B1(混合引用)
· 括号优先级:=(A1+B1)*C1
· 示例:
=A2*1.1 # 增加10%
=(B2-C2)/C2 # 计算增长率
=D2*(1+E2)^F2 # 复利计算
SQL操作方式:
· SELECT中计算:SELECT price * quantity AS total FROM orders
· UPDATE中运算:UPDATE products SET price = price * 1.1 WHERE category = ‘电子’
· 常用算术函数:
-- 基础运算
SELECT
salary + bonus AS 总收入,
salary * 0.08 AS 公积金,
price / quantity AS 单价
FROM employees;
-- 幂运算
SELECT POWER(2, 3) AS 幂结果; -- 8
SELECT SQRT(16) AS 平方根; -- 4
-- 取整运算
SELECT CEILING(15.2) AS 向上取整, -- 16
FLOOR(15.8) AS 向下取整, -- 15
ROUND(15.456, 2) AS 四舍五入; -- 15.46
⚖️ 比较运算
Excel操作方式:
· 比较运算符:=、<>、>、<、>=、<=
· IF函数应用:=IF(A1>100,“达标”,“未达标”)
· 条件格式:开始 → 条件格式 → 突出显示单元格规则
· 数组比较:=IF(AND(A1:A10>100), “全达标”, “有未达标”)
· 示例:
=B2>C2 # 简单比较
=IF(A2>=60,"及格","不及格") # 带输出的比较
=COUNTIF(C:C,">1000") # 统计满足条件的数量
SQL操作方式:
· WHERE子句过滤:SELECT * FROM products WHERE price > 100
· CASE条件判断:
SELECT product_name,
CASE
WHEN price > 1000 THEN '高价'
WHEN price > 500 THEN '中价'
ELSE '低价'
END AS 价格等级
FROM products;
· 多条件比较:
-- AND/OR组合
SELECT * FROM orders
WHERE amount > 1000 AND status = '已完成';
-- BETWEEN范围
SELECT * FROM employees
WHERE salary BETWEEN 5000 AND 10000;
-- IN集合比较
SELECT * FROM products
WHERE category IN ('电子', '服装', '食品');
-- NULL值比较
SELECT * FROM customers
WHERE phone IS NOT NULL;
🔀 逻辑运算
Excel操作方式:
· 逻辑函数:AND()、OR()、NOT()、XOR()
· IF嵌套:=IF(AND(A1>0, B1<100), “有效”, “无效”)
· 数组公式:{=AND(A1:A10>0)}(Ctrl+Shift+Enter)
· IFS函数(新版Excel):=IFS(A1>90,“优秀”,A1>60,“及格”,TRUE,“不及格”)
· 示例:
=AND(B2>0, B2<100) # 与运算
=OR(C2="A", C2="B") # 或运算
=IF(NOT(ISBLANK(D2)), "有数据", "") # 非运算
=IFERROR(A2/B2, "除零错误") # 错误处理
SQL操作方式:
· 布尔运算符:AND、OR、NOT
· WHERE中的逻辑:
SELECT * FROM orders
WHERE (status = '已完成' OR status = '已发货')
AND amount > 500
AND NOT payment_method = '货到付款';
· 布尔表达式:
-- 直接返回布尔值
SELECT product_name, price > 100 AS 是否高价
FROM products;
-- 复杂逻辑判断
SELECT *,
CASE
WHEN score >= 90 AND attendance > 0.9 THEN '优秀'
WHEN score >= 60 OR makeup_exam = true THEN '合格'
ELSE '不合格'
END AS 评定结果
FROM students;
📐 数学运算
Excel操作方式:
· 数学函数库:
· 基础:SUM()、AVERAGE()、MIN()、MAX()
· 舍入:ROUND()、ROUNDUP()、ROUNDDOWN()、INT()
· 随机:RAND()、RANDBETWEEN()
· 其他:MOD()、ABS()、SQRT()、LOG()
· 数组运算:{=SUM(A1:A10*B1:B10)}
· 示例:
=SUM(A1:A10) # 求和
=AVERAGEIF(B1:B100,">0") # 条件平均
=ROUND(C2*1.17, 2) # 含税价格四舍五入
=MOD(ROW(),2)=0 # 判断奇偶行
SQL操作方式:
· 聚合函数:SUM()、AVG()、MIN()、MAX()
· 数学函数:
-- 绝对值与符号
SELECT ABS(-15) AS 绝对值, SIGN(-5) AS 符号;
-- 取整函数
SELECT CEILING(15.2), FLOOR(15.8), ROUND(15.456, 2);
-- 取余运算
SELECT MOD(10, 3) AS 余数; -- 1
-- 指数对数
SELECT EXP(1) AS 自然指数, -- 2.71828
LOG(100, 10) AS 对数, -- 2
LN(EXP(1)) AS 自然对数; -- 1
-- 三角函数
SELECT SIN(PI()/6), COS(0), TAN(PI()/4);
-- 随机数
SELECT RAND() AS 随机数, -- 0-1随机
FLOOR(RAND()*100) AS 随机整数; -- 0-99随机
🔤 字符串运算
Excel操作方式:
· 文本函数:
· 连接:&、CONCAT()、TEXTJOIN()
· 提取:LEFT()、RIGHT()、MID()
· 查找:FIND()、SEARCH()
· 替换:SUBSTITUTE()、REPLACE()
· 清理:TRIM()、CLEAN()
· 转换:UPPER()、LOWER()、PROPER()
· 示例:
=A2 & " " & B2 # 连接字符串
=LEFT(C2, 3) # 取前3字符
=FIND("@", D2) # 查找位置
=SUBSTITUTE(E2, " ", "-") # 替换空格
=TRIM(F2) # 去除首尾空格
=TEXT(G2, "¥#,##0.00") # 数字转文本格式
SQL操作方式:
· 字符串连接:
-- 标准连接
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM employees;
-- 带分隔符连接
SELECT CONCAT_WS(', ', city, state, country) AS 地址
FROM customers;
· 字符串处理函数:
-- 长度与位置
SELECT LENGTH('Hello') AS 长度, -- 5
CHAR_LENGTH('你好') AS 字符数, -- 2
POSITION('lo' IN 'Hello') AS 位置; -- 4
-- 大小写转换
SELECT UPPER('hello'), LOWER('WORLD'), INITCAP('hello world');
-- 提取子串
SELECT SUBSTRING('Hello World', 7, 5) AS 子串, -- World
LEFT('Hello', 3), -- Hel
RIGHT('Hello', 3); -- llo
-- 替换与移除
SELECT REPLACE('Hello World', 'World', 'SQL') AS 替换后,
TRIM(' Hello ') AS 去除空格,
LTRIM(' Hello'), RTRIM('Hello ');
-- 填充与重复
SELECT LPAD('123', 5, '0') AS 左填充, -- 00123
RPAD('123', 5, '*') AS 右填充, -- 123**
REPEAT('Ha', 3) AS 重复; -- HaHaHa
-- 反转与格式化
SELECT REVERSE('SQL') AS 反转, -- LQS
FORMAT(1234567.89, 2) AS 格式化; -- 1,234,567.89
📊 聚合运算
Excel操作方式:
· 基础聚合函数:SUM()、AVERAGE()、COUNT()、MAX()、MIN()
· 条件聚合:
· SUMIF()、SUMIFS()
· COUNTIF()、COUNTIFS()
· AVERAGEIF()、AVERAGEIFS()
· 分类汇总:数据 → 分类汇总
· 数据透视表:插入 → 数据透视表(最强大的聚合工具)
· 示例:
=SUMIF(C:C, ">=1000", D:D) # 条件求和
=AVERAGEIFS(E:E, F:F, "北京", G:G, ">0") # 多条件平均
=COUNTIF(H:H, "<>已完成") # 计数非"已完成"
=MAX(IF(I:I="A", J:J)) # 数组公式求最大值
SQL操作方式:
· GROUP BY聚合:
-- 基本分组
SELECT department,
COUNT(*) AS 人数,
AVG(salary) AS 平均工资,
SUM(salary) AS 总工资
FROM employees
GROUP BY department;
-- 多级分组
SELECT department, job_title,
COUNT(*) AS 人数,
MAX(salary) AS 最高薪
FROM employees
GROUP BY department, job_title;
· HAVING子句:
SELECT category,
AVG(price) AS 平均价格,
COUNT(*) AS 商品数量
FROM products
GROUP BY category
HAVING AVG(price) > 100
AND COUNT(*) > 5;
· 窗口函数(高级聚合):
-- 排名与排序
SELECT name, score,
ROW_NUMBER() OVER(ORDER BY score DESC) AS 排名,
RANK() OVER(ORDER BY score DESC) AS 等级排名,
DENSE_RANK() OVER(ORDER BY score DESC) AS 密集排名;
-- 分区聚合
SELECT department, name, salary,
AVG(salary) OVER(PARTITION BY department) AS 部门平均工资,
SUM(salary) OVER(PARTITION BY department) AS 部门总工资,
salary - AVG(salary) OVER(PARTITION BY department) AS 与平均差值;
-- 累计计算
SELECT order_date, amount,
SUM(amount) OVER(ORDER BY order_date) AS 累计销售额,
AVG(amount) OVER(ORDER BY order_date
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS 近7日移动平均;
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)