1select SQL 语言中常用的合计函数有哪些?在哪些情况下需要使用这些函数?
2 使用查询设计器查看查询 ximjsgz.qpr的select sql 语句 使用type命令查看查询 cjcross.qpr的select sql 语句 使用modify command 或 modif file命令修改查询zcjsgz.qpr
1select SQL 语言中常用的合计函数有哪些?在哪些情况下需要使用这些函数?
2 使用查询设计器查看查询 ximjsgz.qpr的select sql 语句 使用type命令查看查询 cjcross.qpr的select sql 语句 使用modify command 或 modif file命令修改查询zcjsgz.qpr
所有的合计函数如下表所示:
MIN | 返回一个给定列中最小的数值 |
MAX | 返回一个给定列中最大的数值 |
SUM | 返回一个给定列中所有数值的总和 |
AVG | 返回一个给定列中所有数值的平均值 |
COUNT | 返回一个给定列中所有数值的个数 |
COUNT(*) | 返回一个表中的行数 |
假设我们将从employee表中搜索工资最高的列,可以使用以下的SQL语句:
SELECt max(salary), dept
FROM employee
GROUP BY dept;
这条语句将在每一个单独的部门中选择工资最高的工资。结果他们的salary和dept将被返回。
SELECt dept, avg(salary) 每个部门,的平均工资
FROM employee 来自此表
GROUP BY dept 每部门只显示一个,相同部门不显示。
HAVINg avg(salary) > 20000; 指定平均值大于多少的显示
你可以把字符串表达式变量用于 SQL 合计函数以在字段中进行值的计算。例如,可以将一个字段的值乘一系数来计算百分比 (如附加税或销售税)。
下列表提供了对 Northwind.mdb 数据库的 Orders (订单)及 Order Details (订货明细)表中字段进行计算的示例。
计算 | 示例 |
---|---|
往字段中加一个数 | Freight +5 |
从字段中减一个数 | Freight - 5 |
字段乘以一数 | UnitPrice * 2 |
字段除以一数 | Freight / 2 |
两字段相加 | UnitsInStock + UnitsOnOrder |
两字段相减 | ReorderLevel - UnitsInStock |
下列示例计算 Northwind.mdb 数据库中所有订单的平均折扣量。它将单价及折扣字段中的值相乘,算出每一份订单的折扣,然后计算平均值。你可以把这一表达式用于Visual Basic 编码的 SQL 语句。
SELECt Avg(UnitPrice * Discount) AS [Average Discount] FROM [Order Details];
Avg 函数计算包含在特定查询字段中的一组数值的算术平均值。
语法Avg(expr)
其中 expr 代表一个字符串表达式,它或者标识一个字段,该字段包含要计算平均值的数据;或者标识一个表达式,它用该字段中的数据来执行计算。 expr中的运算对象可能包括一个表字段名,一个常数或一个函数(可能是内在的,也可能是用户自定义的,但不是 SQL 合计函数)。
说明使用 Avg 计算的平均值是算术平均值(将全部值的总和除以值的数目)。例如,可以使用 Avg 计算货运的平均费用。
Avg 函数在计算中不计任何 Null 字段。
你可以把 Min 和 Max 用于询问表达式和具备 SQL 特性的 QueryDef 对象中或在创建基于 SQL 查询的 Recordset 对象时。
Avg 函数示例
此示例使用订单表对那些运费超过 $100 的订单计算平均货运费。
此示例调用过程 EnumFields 过程,且可以在 SELECt 语句示例中找到该过程。
Sub AvgX()
Dim dbs As Database, rst As Recordset
' 在您的计算机中修改此行使其正确指到 Northwind 的路径。
Set dbs = OpenDatabase("Northwind.mdb")
' 对运费超过 $100 的订单,
' 计算运费超过$100的订单的平均货运费。
Set rst = dbs.OpenRecordset("SELECT Avg(Freight)" _
& " AS [Average Freight]" _
& " FROM Orders WHERe Freight > 100;")
' populateRecordset。
rst.MoveLast
' 调用 EnumFields 来打印记录集的内容。
'传递记录集对象和要求的字符宽度。
EnumFields rst, 25
dbs.Close
End Sub
Count 函数计算从查询返回的记录数。
语法Count(expr)
其中 expr 代表一个字符串表达式,它或者标识一个字段,该字段包含要计算的数据;或者是一个表达式,它使用此字段中的数据来执行计算。expr 中的运算对象可能包括一个表字段名,一个常数或一个函数(可能是内在的,也可能是用户自定义的,但不是 SQL合计函数).您可以计算任何种类的数据,包含文本数据。
说明可以使用 Count 计算下一级查询的记录数。例如,可以使用 Count 计算运往指定国家的货物订单数量。
虽然 expr 能执行一个字段上的计算,但 Count 只是简单计算记录的数量。并不管记录中保存的是什么值。
Count 函数不数带有 Null 字段的记录,除非 expr是星号 (*) 通配符dadefWildcardCharacters.如果使用星号,Count 将计算所有记录的总量,包括有 Null 的字段的记录。Count(*) 比 Count ([Column Name]) 快得多。不要将星号放在引号 (' ') 中。下列示例计算 Orders 表之中的记录数:
SELECt Count(*)
AS TotalOrders FROM Orders;
如果 expr 标识多重字段,在至少有一个字段的值不为 Null 的情况下, Count 函数只计算一个记录。如果全部的指定字段为 Null,没有记录会被计算。使用 (&) 分隔字段名。下面是一个示例,它说明如何限制仅对 ShippedDate 或 Freight 字段不为 Null 的记录进行计算:
SELECt
Count('ShippedDate & Freight')
AS [Not Null] FROM Orders;
在查询表达式中可以使用 Count。你可以把这些表达式应用于具备 SQL特性的 QueryDef对象中或在创建基于SQL查询的Recordset时。
Count 函数示例
此示例使用订单表计算已送货至英国的订单笔数。
此示例调用过程 EnumFields 过程,且可以在 SELECt 语句示例中找到该过程。
Sub CountX()
Dim dbs As Database, rst As Recordset
' 在您的计算机中修改此行使其正确指到 Northwind 的路径。
Set dbs = OpenDatabase("Northwind.mdb")
' 对运费超过 $100 的订单,
' 计算已送货到英国的订单笔数。
Set rst = dbs.OpenRecordset("SELECT" _
& " Count (ShipCountry)" _
& " AS [UK Orders] FROM Orders" _
& "WHERe ShipCountry = 'UK';")
' populateRecordset。
rst.MoveLast
' 调用 EnumFields 来打印记录集的内容。
'传递记录集对象和要求的字符宽度。
EnumFields rst, 25
dbs.Close
End Sub
下一个示例简单地使用 Min 和 Max 函数来查找员工最早和最晚的生日日期,以比较 First 和 Last 函数的结果。
Sub FirstLastX2()
Dim dbs As Database, rst As Recordset
' 在您的计算机中修改此行使其正确指到 Northwind 的路径。
Set dbs = OpenDatabase("Northwind.mdb")
' 对运费超过 $100 的订单,
' 查找员工最早和最晚的生日日期。
Set rst = dbs.OpenRecordset("SELECt " _
& "First(BirthDate) as FirstBD, " _
& "Last(BirthDate) as LastBD FROM Employees;")
' populateRecordset。
rst.MoveLast
' 调用 EnumFields 来打印记录集的内容。
'传递记录集对象和要求的字符宽度。
EnumFields rst, 12
Debug.Print
' 查找员工最早和最晚的生日日期。
Set rst = dbs.OpenRecordset("SELECt " _ & "Min(BirthDate) as MinBD," _
& "Max(BirthDate) as MaxBD FROM Employees;")
' populateRecordset。
rst.MoveLast
' 调用 EnumFields 来打印记录集的内容。
'传递记录集对象和要求的字符宽度。
EnumFields rst, 12
dbs.Close
End Sub
Min 和 Max 函数在查询时从一组指定字段的值中返回最小或最大值。
语法Min(expr)
Max(expr)
其中 expr 代表一个字符串表达式,它或者标识一个字段,该字段包含要计算的数据;或者是一个表达式,它使用此字段中的数据来执行计算。 expr中的运算对象可能包括一个表字段名,一个常数或一个 函数 (可能是内在的,也可能是用户自定义的,但不是 SQL 合计函数)。
说明可以使用 Min 及 Max 来计算字段中的最小及最大值,该字段是基于指定的合计或分组的。例如,可以使用这些函数返回最低和最高的货运成本。如果没有指定合计,则使用整个表。
你可以把 Avg 用于查询表达式和具备 SQL特性的 QueryDef对象中或当创建基于SQL查询的 Recordset对象时。
Min、Max 函数示例
此示例使用订单表对送货至英国的订单返回最低的和最高的货运运费。
此示例调用过程 EnumFields 过程,且可以在 SELECt 语句示例中找到该过程。
Sub MinMaxX()
Dim dbs As Database, rst As Recordset
' 在您的计算机中修改此行使其正确指到 Northwind 的路径。
Set dbs = OpenDatabase("Northwind.mdb")
' 对运费超过 $100 的订单,
' 对送货到英国的订单返回最低的和最高的
' 货运运费。
Set rst = dbs.OpenRecordset("SELECT " _
& "Min(Freight) AS [Low Freight], " _
& "Max(Freight)AS [High Freight] " _
& "FROM Orders WHERe ShipCountry = '英国';")
' populateRecordset。
rst.MoveLast
' 调用 EnumFields 来打印记录集的内容。
'传递记录集对象和要求的字符宽度。
EnumFields rst, 12
dbs.Close
End Sub
Sum 函数
返回包含在指定查询字段中一组值的总计。
语法Sum(expr)
其中 expr 代表一个字符串表达式,它或者标识一个字段,该字段包含要计算的数据;或者是一个表达式,它使用此字段中的数据来执行计算。 expr中的运算对象可能包括一个表字段名,一个常数或一个函数(可能是内在的,也可能是用户自定义的,但不是 SQL 合计函数)。
说明Sum 函数求字段中值的总和。例如,可用 Sum 函数计算货运的总费用。
Sum 函数会忽略包含 Null 字段的记录。下列示例显示如何计算产品的 UnitPrice (单价)及 Quantity (数量)字段的合计:
SELECt
Sum(UnitPrice * Quantity)
AS [Total Revenue] FROM [Order Details];
可以在一个查询表达式之中使用 Sum 函数。你也可以在具备 SQL 特性的 QueryDef 对象中或在创建基于SQL查询的 Recordset 对象时使用这一表达式。
Sum 函数示例
此示例使用订单表计算对于送货至英国订单的合计销售额。
此示例调用过程 EnumFields 过程,且可以在 SELECt 语句示例中找到该过程。
Sub SumX()
Dim dbs As Database, rst As Recordset
' 在您的计算机中修改此行使其正确指到 Northwind 的路径。
Set dbs = OpenDatabase("Northwind.mdb")
' 对运费超过 $100 的订单,
'对于送货到英国的订单计算总销售额。
Set rst = dbs.OpenRecordset("SELECT" _
& " Sum(UnitPrice*Quantity)" _
& " AS [Total UK Sales] FROM Orders" _
& " INNER JOIN [Order Details] ON" _
& " Orders.OrderID = [Order Details].OrderID" _
& " WHERe (ShipCountry = '英国');")
' populateRecordset。
rst.MoveLast
' 调用 EnumFields 来打印记录集的内容。
'传递记录集对象和要求的字符宽度。
EnumFields rst, 15
dbs.Close
End Sub
avg()
count()
sum()
min()
max()
avg():求平均 例如求学生的平均分
sum():求总和 求总分
count():统计个数 统计学生人数
下面那个问题我也不会
.qpr 是什文件哦 呵呵 !