SQL语句中的一些简单计算函数:
如max函数
SELECT MAX(列字段) AS 别名1 FROM [工作表名$]
如AVG函数
SELECT AVG(列字段) AS 别名1 FROM [工作表名$]
使用实例说明:
源数据:
查询内容
对英语成绩最高分:
对英语成绩平均分:
代码运行的结果如下:
代码如下:
Sub FuYun_Sql_Avg()
Dim cnn As Object, rst As Object
Dim Mypath As String, Str_cnn As String, Sql As String
Dim i As Long
Set cnn = CreateObject("adodb.connection")
'以上是第一步,后期绑定ADO
Mypath = ThisWorkbook.FullName
'以上获取当前工作簿的路径及名称
If Application.Version
< 12 Then'格式为.xls,调用下述语句
Str_cnn = "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & Mypath
Else
'格式为.xlsx,调用下述语句
Str_cnn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & Mypath
End If
cnn.Open Str_cnn
'以上是第二步,建立链接
Sql = "SELECT avg(英语) as 平均分 FROM [英语-成绩单$]"
'Sql语句,查询所有数据,并按照英语成绩进行排序
[g2:g1000].ClearContents
'清空[g2:g1000]区域内容
Range("g2").CopyFromRecordset cnn.Execute(Sql)
'Execute语句先执行SQL语句
'使用单元格对象的CopyFromRecordset方法将SQL查询到的内容复制到D2单元格为左上角的单元格区域
'以上是第三步,执行SQL语句并将数据读入表格指定区域
cnn.Close
'关闭链接
Set cnn = Nothing
'释放内存
End Sub
代码解析
代码我放了一个例子,大部分的代码是一致的,只有SQL的句子不一样。 SQL支持的函数有 COUNT函数(计数)、SUM函数(求和)、MIN(最小值)
SELECT COUNT(列字段) AS 别名1 FROM [工作表名$] SELECT SUM(列字段) AS 别名1 FROM [工作表名$] SELECT MIN(列字段) AS 别名1 FROM [工作表名$]
多种函数还可以一起使用。比如最高分和平均分:
Sql = "SELECT MAX(英语) as 最高分,SELECT avg(英语) as 平均分 FROM [英语-成绩单$]"
延伸阅读