暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL 聚合函数

Excel VBA练习 2021-06-21
547

聚合函数对一组值进行计算并返回单一的值,它也称为列函数或组合函数,能够对整个数据集合进行计算,并返回一行包含着原始数据集合汇总结果的记录


在SQL IN EXCEL 中常用的函数有

SUM(求和),Max(最大值),Min(最小值),Avg(平均值),Count(计数)等


相信经常使用Excel的小伙伴对这些函数相对熟悉


另外在SQL IN EXCEL 有两个函数小编觉得挺有意思的

FIRST函数从查询所返回的结果集的第一个记录返回字段值

LAST函数则是从查询所返回的结果集的最后一个记录返回字段值


如下图所示



这是一份某公司给员工的高温补贴


1.统计贴补总额


    strSQL = "Select Sum(补贴) As 补贴总额 From " & strSource


    2.补贴最大金额


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

      3.补贴最小金额


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

        4.补贴平均金额

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

          如果小数点太多,可以在嵌套个Round函数

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


            注:Sum,Max,Min,Avg 的参数必须为数值型,如遇空值则忽略不计


            5.统计次数


            Count(计数)有两种写法,一种为Count(*),另外一种是Count(字段名)


              strSQL = "Select Count(*) As Count_星,Count(员工) As Count_字段名 From " & strSource


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



              返回的结果就不一样了

              如果使用了Count(*),COUNT将计算记录总数(包括含Null字段的记录)

              在SQL没进行筛选条件,尽量不要使用Count(*)语句

              而Count(*)的运算效率又比Count(字段名)要高很多


              6.利用Distinct+Count计算不重复次数


                strSQL = "Select Count(*) As 员工人数 From (Select Distinct 员工 From " & strSource & ")"


                如果和例5一样出现了空值


                  strSQL = "Select Count(*) As 员工人数 From (Select Distinct 员工 From " & strSource & " Where 员工 <> Null)"


                  增加多个判断条件,员工<>NULL



                  7.计算起始月份和终止月份以及补贴总额


                    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


                      收工!

                      如果觉得文章有用点个赞+在看,你的每一次点赞和转发就是小编最大的动力


                      文章转载自Excel VBA练习,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                      评论