SELECT MAX(语文) AS 语文最高分
FROM [成绩表$]
SELECT MIN(数学) AS 数学最低分
FROM [成绩表$]
SELECT ROUND(AVG(英语),2) AS 英语平均分
FROM [成绩表$]
SELECT
SUM(语文) AS 语文总分,
SUM(数学) AS 数学总分,
SUM(英语) AS 英语总分
FROM [成绩表$]
总分最高分:
SELECT MAX(语文+数学+英语) AS 总分最高分
FROM [成绩表$]
SELECT COUNT(*) AS 学生人数
FROM [成绩表$]
但当COUNT用于计算指定字段时,它会忽略Excel的空白值以及数据库的NULL。
SELECT COUNT(姓名) AS 学生人数
FROM [成绩表$]
这是因为在Excel中,SQL默认读取的是整张表格的UsedRange区域(可以简单理解成表格内已使用的单元格所构成的最大矩形区域)。
例如上例中的 SELECT * FROM [成绩表$] 读取的是已使用的单元格区域A1:E9,而并非整张表格——但当F14单元格有被使用过时,哪怕只是填充了背景色,SQL读取的区域也会演变成A1:F14…………这常常就会产生糟糕的结果……
SELECT COUNT(*) AS 语文及格人数
FROM [成绩表$]
WHERE 语文>=60
SELECT COUNT(*) AS 三科均及格人数
FROM [成绩表$]
WHERE 语文>=60
AND 数学>=60
AND 英语>=60
但上述SQL语句也可以写成:
SELECT COUNT(*) AS 三科均及格人数
FROM [成绩表$]
WHERE (语文>=60)+(数学>=60)+(英语>=60)=-3
我们知道在EXCEL工作表函数中,当进行数学运算时,逻辑值TRUE等于1,FALSE等于0,但在SQL In Excel 中(或者说在VBA中)并非如此。
在SQL中,逻辑值FALSE依然等于0,但TRUE则等于-1。当三个条件均为真时,也就是-1+-1+-1,其结果必然等于-3,以此即可判断三条件是否均成立。
知道这个知识点有什么用处?
例如下面这个问题:
2.1)计算三科成绩中至少有两科及格的人数。
使用逻辑值运算技巧,如下即可:
SELECT COUNT(*) AS 至少两科及格人数
FROM [成绩表$]
WHERE (语文>=60)+(数学>=60)+(英语>=60)<=-2
SELECT *
FROM [成绩表$]
WHERE (语文>=60)+(数学>=60)+(英语>=60)<=-2
……
……
⏩需要系统学习Excel却找不到优质教程?学习Excel的过程中遇到疑难问题,却找不到人及时作出解答?
加入我的付费社群,学习+训练+答疑,与6000+在线会员一起,同微软最有价值专家MVP同行,全面精进Excel之道
🚂>>~
加入我的付费会员,全面学习Excel
透视表 函数 图表 VBA PQ想学啥学啥
👀