问题:在“学籍管理”数据库建立一个名为“学生平均分”的视图,显示学号和平均分字段,要求平均分为每个学生所有科目的平均分,排序方式为:按照平均分的降序排列。视图里的命令是这样的:SELECT TOP (100) PERCENT 学号, AVG(成绩) AS 平均分
FROM dbo.成绩表
GROUP BY 学号
ORDER BY 平均分 DESC最后结果为什么是按学号排序的,而不是平均分的????
FROM dbo.成绩表
GROUP BY 学号
ORDER BY 平均分 DESC最后结果为什么是按学号排序的,而不是平均分的????
SELECT TOP (100) PERCENT 学号, AVG(成绩) AS 平均分
FROM dbo.成绩表
GROUP BY 学号
ORDER BY AVG(成绩) DESC
--建视图对order by一般不处理,需要自己在查询视图的时候指定排序字段
select * from 学生平均分 order by 平均分 desc
FROM dbo.成绩表
GROUP BY 学号
ORDER BY AVG(成绩) DESC别名在输出后才能使用。
FROM dbo.成绩表
GROUP BY 学号
ORDER BY AVG(成绩) desc
这个也试过了:
ORDER BY AVG(成绩) DESC但是,结果还是一样挺郁闷的
可以做,但有的时候对视图进行增加,更新有好多的限制,实际当中我们一般用视图仅作查询即可
--测试数据
select id,[name], max(A) A,max(B) b,max(C) C
from tb
group by id,[name]
---4.
if object_id('tb') is not null drop table tb
create table tb
(
id varchar(18),
score int
)
insert tb
select '001',70 union all
select '001',70 union all
select '001',80 union all
select '001',90 union all
select '001',50 union all
select '002',60 union all
select '002',60 union all
select '002',80 union all
select '002',70
go
--创建视图
if object_id('view_AvgScore') is not null drop view view_AvgScore
go
create view view_AvgScore
as
select top 10 id,avg(score) as '平均份'
from [tb]
group by id
order by [平均份] desc--测试
select * from view_AvgScore
id 平均份
------------------ -----------
001 72
002 67(2 行受影响)
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、使用order by对结果集进行排序。你查询出来的数据是否是按平均分排序?如果是这样,你看是否由于你先top了,所以出来的结果不是你想要的。