1.
姓名 数学 物理 语文
---------- ----------- ----------- -----------
李四 84 94 74
张三 83 93 74
2.
姓名 课程 分数
---------- ---------- -----------
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
sql server 对于上面两种表分别求成绩表中各个科目大于平均值的人数!好像涉及到行转列了...
请高人指点,折腾了一晚上没睡觉也没折腾出来... 囧
答出来一定追加积分... (┬_┬)
where语句中不能用聚合函数吧。。。。
2不用存储过程,2层也可以,能说下思路么
where条件应该是可以使用聚合函数的,但是不管是什么样的情况都不能聚合函数进行嵌套!orcle数据库中可以嵌套的,SQL子查询的层不能超过三层!第二个其实是二层三个SQL子查询的嵌套,共六个SQL,一般认为在条件中使用嵌套与子查询数据库性能不好,很少使用的!就是一个使用select 语句求出平均值,然后使用大于就可以了!因为子查询里还涉及分组,所以性能较低!
如果在SQL中不支持聚合函数的话,可以将聚合函数改成子查询与第二个就相同了!但不涉及分组的!比较下来还是使用存储过程比较好!不明白为什么你非要一句SQL语句呢?
declare @avg_yuwen double
select @avg_yuwen = avg(语文) from [表1]
select count(*) from [表1] where 语文>@avg_yuwen
要比
select count(*) from [表1] where 语文> avg(语文)
和
select count(*) from [表1] where 语文 > (select avg(语文) from [表1])
的性能都高
而select count(*) from [表2] where 语文> (select avg(语文) from [表2] group by 姓名) group by 姓名
就句就是求表2语文的,将三个语句联合就是二层的!你自己看一下我为什么建议你使用存储过程了!
【急求】用sql语句求成绩表中各个科目大于平均值的人数
select COUNT(1),名字 FROM 表1 where 数学> (select AVG(数学) FROM 表1) group by 名字 Union select COUNT(1),名字 FROM 表1 where 屋里> (select AVG(物理) FROM 表1) group by 名字 第二个表2:select COUNT(1), a.名字, a.课程from 表2 a inner join (select AVG(分数)...
SQL Sever里,有一张表,每天一条数据,请问在视图中如何按月统计某字段...
where 成绩>20 group by convert(varchar,datepart(year,日期))+'-'+ convert(varchar,datepart(month,日期))) t1
一条SQL求大于某字段平均值的条件。
AND table1.工资 > 子查询.部门平均工资
数据分析-SQL 窗口函数
通过聚合窗口函数计算单科成绩高于该科目平均成绩的数据时,同样需要使用窗口函数来实现,通过计算每个科目内的平均成绩,然后筛选出高于平均成绩的数据。窗口函数还可以用于计算移动平均,例如计算当前行与前n行(共n+1行)的平均值,这在公司业绩排名等场景中非常有用,可以直观地查看到与相邻名次业绩的平均...
SQL求总分及平均值
SQL求总分及平均值的方法。如下参考:1.打开数据库软件,添加数据库,右键点击并选择新查询。2.输出带SQL语句的类zd名称,附加项的平均分,命令是selectclasstableversion。类名,avg(分数)为平均分。3.将学生表和班级表与班级号连接起来,然后将结果表和学生表与学生号连接起来。4.数据表关联一般是使用...
用SQL语句完成下列问题。
1、第一题,是查询总和,总和在SQL中使用sum,如:select sum(成绩) from 表名 2、第二题,查询平均值,SQl:select 学号,Avg(sum(成绩)) from 表名 group by 学号 3、第三题,查询每课程学生人数,SQL : select 课程名称,count(学号) from 表名 group by 课程名称 4、第四题,查询最高...
学生成绩表如何用sql语句实现平均分?
4、分别双击“tScore”表中的“学号”和“成绩”字段。5、单击【显示\/隐藏】分组中的“汇总”按钮,在“成绩”字段的“总计”行下拉列表中选中“平均值”,在“排序”行选中“降序”,在“学号”字段的“总计”行下拉列表中选中“Group By”。6、在“成绩”字段的“字段”行前面添加“平均分:”...
sql server中如何显示某列上的值大于该列平均值的所有记录?
select * from 表 where 列>(select avg(列) from 表)
SQL语句,如何求每个学生的成绩与平均成绩的差?
不知道你具体什么数据库,,,可以用with as语句 ;with cte as(select *from 表 ) select *, 成绩-(select avg(成绩) from test ) as 平均成绩from cte t
SQL语句求平均值,急求!!!
sum(score)\/datediff(hour, startdate, enddate)\/24.0