聚合函数对一组值进行计算并返回单一的值,它也称为列函数或组合函数,能够对整个数据集合进行计算,并返回一行包含着原始数据集合汇总结果的记录
在SQL IN EXCEL 中常用的函数有
SUM(求和),Max(最大值),Min(最小值),Avg(平均值),Count(计数)等
相信经常使用Excel的小伙伴对这些函数相对熟悉
另外在SQL IN EXCEL 有两个函数小编觉得挺有意思的
FIRST函数从查询所返回的结果集的第一个记录返回字段值
LAST函数则是从查询所返回的结果集的最后一个记录返回字段值
如下图所示

这是一份某公司给员工的高温补贴
1.统计贴补总额
strSQL = "Select Sum(补贴) As 补贴总额 From " & strSource

strSQL = "Select Max(补贴) As 补贴最大金额 From " & strSource

strSQL = "Select Min(补贴) As 补贴最小金额 From " & strSource

strSQL = "Select Avg(补贴) As 补贴平均金额 From " & strSource

如果小数点太多,可以在嵌套个Round函数
strSQL = "Select Round(Avg(补贴),2) As 补贴平均金额 From " & strSource

注:Sum,Max,Min,Avg 的参数必须为数值型,如遇空值则忽略不计
Count(计数)有两种写法,一种为Count(*),另外一种是Count(字段名)
strSQL = "Select Count(*) As Count_星,Count(员工) As Count_字段名 From " & strSource

如果在员工的记录出现空值

返回的结果就不一样了

如果使用了Count(*),COUNT将计算记录总数(包括含Null字段的记录)
在SQL没进行筛选条件,尽量不要使用Count(*)语句
而Count(*)的运算效率又比Count(字段名)要高很多
strSQL = "Select Count(*) As 员工人数 From (Select Distinct 员工 From " & strSource & ")"

如果和例5一样出现了空值
strSQL = "Select Count(*) As 员工人数 From (Select Distinct 员工 From " & strSource & " Where 员工 <> Null)"
增加多个判断条件,员工<>NULL
strSQL = "Select 员工,First(月份) As 起始月份,Last(月份) As 终止月份,Sum(补贴) As 补贴总额 From " & strSource & " Group By 员工"

由于数据源符合了First以及Last函数的要求,才返回了正确的结果

若是数据源是这样的

返回的结果

可能有细心的小伙伴会想到以排序作为子查询在使用First以及Last函数
有兴趣的小伙伴可以试试..
在这里借助下Replace,Min,Max函数
strSQL = "Select 员工,Min(Replace(月份,'月','')*1)&'月' As 起始月份,Max(Replace(月份,'月','')*1)&'月' As 终止月份, "strSQL = strSQL & "Sum(补贴) As 补贴总额 From " & strSource & " Group By 员工"

先是使用Replace将字段值中的月替换为空,在*1转换为数值,使用MIN,MAX分别取最小值以及最大值,分别在后面连接'月'
在这里使用Group By 分组,这也是我们常说的分组聚合,我们下一期撩
在SQL IN EXCEL中很多Excel中的函数MID,LEFT,RIGHT,REPLACE,DAY,DATE,NOW,WEEKDAY等等都是支持的
示例文件下载:
链接:https://pan.baidu.com/s/1OIg2SzdZAlySh1QO53PqMQ
提取码:abcd
收工!
如果觉得文章有用点个赞+在看,你的每一次点赞和转发就是小编最大的动力




