欢迎光临
我们一直在努力

在ADO使用SELECT语法三

建站超值云服务器,限时71元/月

接上一篇文章:

order by

order by子句,可以设定排序的字段。

在一个sql表达式之中,order by子句通常放置于最后。

若要以递减顺序来进行排序(z~a,9 ~0),须于您要递减排序的每一字段的尾部加desc字。譬如:

select 姓名

from 员工

order by 工资 desc, 年龄

表示[工资] 字段以递减顺序来进行排序,[年龄] 字段以递增顺序来进行排序。

order by子句中排序的字段,不可以包含memo字段类型或ole对象类型,否则会发生错误。

在order by子句之中包含多个的字段时,首先以order by之后的第一个字段来进行排序。然后,若在此字段之中有相同的资料记录,才会以列第二字段来进行排序,依此类推。

group by

group by将查询的结果做统计,语法如下:

select fieldlist

from table

where criteria

[group by groupfieldlist]

使用where子句,可以设定不想要做统计的资料,而使用having子句可以筛选已经统计之后的字段。

不可以对memo字段类型或ole对象类型的字段做统计,否则会发生错误。

譬如asp程式rs22.asp如下,[select 种类, avg(价格) as 平均 from 产品 group by 种类] 使用group by将查询的结果做 [种类] 统计,统计各个种类统计来平均价格avg(价格):

<%

set conn1 = server.createobject("adodb.connection")

conn1.open "dbq=" & server.mappath("ntopsamp.mdb") & ";driver={microsoft access driver (*.mdb)};driverid=25;fil=ms access;"

set rs2 = server.createobject("adodb.recordset")

sqlstr = "select 种类, avg(价格) as 平均 from 产品 group by 种类"

response.write "<p>avg(价格)"

rs2.open sqlstr,conn1,1,1

do while not rs2.eof

response.write "<br>" & rs2("种类") & ": " & rs2("平均")

rs2.movenext

loop

rs2.close %>

以上的 asp程式rs22.asp,用户端使用浏览器,浏览执行的结果,显示依据 [种类] 统计来统计平均价格。

让我们多看个例子,譬如asp程式rs22.asp如下,[select 种类, sum(数量*价格) as 总计 from 产品 group by 种类] 使用group by将查询的结果做 [种类] 统计,统计各个种类的数量与价格相乘的总价sum(数量*价格):

<%

set conn1 = server.createobject("adodb.connection")

conn1.open "dbq=" & server.mappath("ntopsamp.mdb") & ";driver={microsoft access driver (*.mdb)};driverid=25;fil=ms access;"

set rs2 = server.createobject("adodb.recordset")

sqlstr = "select 种类, sum(数量*价格) as 总计 from 产品 group by 种类"

rs2.open sqlstr,conn1,1,1

response.write "<p>sum(数量*价格)"

do while not rs2.eof

response.write "<br>" & rs2("种类") & ": " & rs2("总计")

rs2.movenext

loop

rs2.close %>

以上的 asp程式rs22.asp,在用户端使用浏览器,浏览执行的结果,显示依据 [种类] 来统计总价。

groupfieldlist为用以统计的字段名称,最多为10个字段。

在groupfieldlist中字段名称的顺序,将决定统计层次,由最高至最低的层次来分组。

最后,譬如asp程式rs22.asp如下,[select 姓名,科目,avg(分数) as 平均 from 考试 group by 姓名,科目] 使用group by将查询的结果做依据 [姓名] 和 [科目] 统计,统计各个统计的 [平均] 分数avg(分数):

<%

set conn1 = server.createobject("adodb.connection")

conn1.open "dbq=" & server.mappath("ntopsamp.mdb") & ";driver={microsoft access driver (*.mdb)};driverid=25;fil=ms access;"

set rs2 = server.createobject("adodb.recordset")

sqlstr = "select 姓名,科目,avg(分数) as 平均 from 考试 group by 姓名,科目"

rs2.open sqlstr,conn1,1,1

response.write "<p>group by 姓名,科目"

do while not rs2.eof

response.write "<br>" & rs2("姓名") & " " & rs2("科目") & " 平均: " & rs2("平均")

rs2.movenext

loop

rs2.close

%>

以上的 asp程式rs22.asp,在用户端使用浏览器,浏览执行的结果,显示依据 [姓名] 和 [科目] 来统计 [平均] 分数。

学会了吗?

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 在ADO使用SELECT语法三
分享到: 更多 (0)