access的SQL语句,写一个能筛选出最受欢迎的人的语句 100
表的内容里有科目名,教师ID,教师姓名,是否得到好评(这一栏就是-1和0区别的)要选出最受欢迎的老师,需要数出这个表里各个教师得到的好评非好评的总数a(也就是其教师ID出...
表的内容里有
科目名,教师ID, 教师姓名,是否得到好评(这一栏就是-1和0区别的)
要选出最受欢迎的老师,
需要数出这个表里各个教师得到的好评非好评的总数a(也就是其教师ID出现的次数)
还有各个教师得到的好评数b(即每个教师得到值为-1的次数)
然后将b/a,得出的数字就是好评率了
最后要按好评率高到低排序就行
请问这要怎么用SQL写
急需 展开
科目名,教师ID, 教师姓名,是否得到好评(这一栏就是-1和0区别的)
要选出最受欢迎的老师,
需要数出这个表里各个教师得到的好评非好评的总数a(也就是其教师ID出现的次数)
还有各个教师得到的好评数b(即每个教师得到值为-1的次数)
然后将b/a,得出的数字就是好评率了
最后要按好评率高到低排序就行
请问这要怎么用SQL写
急需 展开
2个回答
展开全部
可以把同一个教师,不同科目的好评分开。如果不分开,把中间的科目名全部去掉就行了。
select N.科目名,N.教师ID, N.教师姓名,M.HPL from
(select max(e.b/f.a) AS HPL
from ((select 科目名,教师ID, 教师姓名, count(*) as b from table where hp=-1 group by 科目名,教师ID, 教师姓名)e
left join
(select 科目名,教师ID, 教师姓名, count(*) as a from table group by 科目名,教师ID, 教师姓名)f
on f.科目名=e.科目名 and f.教师ID=e.教师ID and e.教师姓名=f.教师姓名 )
) M
left join
(select e.科目名,e.教师ID, e.教师姓名,e.b/f.a AS HPL
from ((select 科目名,教师ID, 教师姓名, count(*) as b from table where hp=-1 group by 科目名,教师ID, 教师姓名)e
left join
(select 科目名,教师ID, 教师姓名, count(*) as a from table group by 科目名,教师ID, 教师姓名)f
on f.科目名=e.科目名 and f.教师ID=e.教师ID and e.教师姓名=f.教师姓名 )
) N
ON N.HPL=M.HPL
如果需要第个科目最受欢迎的教师,
select N.科目名,N.教师ID, N.教师姓名,M.HPL from
(select e.科目名,max(e.b/f.a) AS HPL
from ((select 科目名,教师ID, 教师姓名, count(*) as b from table where hp=-1 group by 科目名,教师ID, 教师姓名)e
left join
(select 科目名,教师ID, 教师姓名, count(*) as a from table group by 科目名,教师ID, 教师姓名)f
on f.科目名=e.科目名 and f.教师ID=e.教师ID and e.教师姓名=f.教师姓名 )
gropy by e.科目名
) M
left join
(select e.科目名,e.教师ID, e.教师姓名,e.b/f.a AS HPL
from ((select 科目名,教师ID, 教师姓名, count(*) as b from table where hp=-1 group by 科目名,教师ID, 教师姓名)e
left join
(select 科目名,教师ID, 教师姓名, count(*) as a from table group by 科目名,教师ID, 教师姓名)f
on f.科目名=e.科目名 and f.教师ID=e.教师ID and e.教师姓名=f.教师姓名 )
) N
ON N.HPL=M.HPL
select N.科目名,N.教师ID, N.教师姓名,M.HPL from
(select max(e.b/f.a) AS HPL
from ((select 科目名,教师ID, 教师姓名, count(*) as b from table where hp=-1 group by 科目名,教师ID, 教师姓名)e
left join
(select 科目名,教师ID, 教师姓名, count(*) as a from table group by 科目名,教师ID, 教师姓名)f
on f.科目名=e.科目名 and f.教师ID=e.教师ID and e.教师姓名=f.教师姓名 )
) M
left join
(select e.科目名,e.教师ID, e.教师姓名,e.b/f.a AS HPL
from ((select 科目名,教师ID, 教师姓名, count(*) as b from table where hp=-1 group by 科目名,教师ID, 教师姓名)e
left join
(select 科目名,教师ID, 教师姓名, count(*) as a from table group by 科目名,教师ID, 教师姓名)f
on f.科目名=e.科目名 and f.教师ID=e.教师ID and e.教师姓名=f.教师姓名 )
) N
ON N.HPL=M.HPL
如果需要第个科目最受欢迎的教师,
select N.科目名,N.教师ID, N.教师姓名,M.HPL from
(select e.科目名,max(e.b/f.a) AS HPL
from ((select 科目名,教师ID, 教师姓名, count(*) as b from table where hp=-1 group by 科目名,教师ID, 教师姓名)e
left join
(select 科目名,教师ID, 教师姓名, count(*) as a from table group by 科目名,教师ID, 教师姓名)f
on f.科目名=e.科目名 and f.教师ID=e.教师ID and e.教师姓名=f.教师姓名 )
gropy by e.科目名
) M
left join
(select e.科目名,e.教师ID, e.教师姓名,e.b/f.a AS HPL
from ((select 科目名,教师ID, 教师姓名, count(*) as b from table where hp=-1 group by 科目名,教师ID, 教师姓名)e
left join
(select 科目名,教师ID, 教师姓名, count(*) as a from table group by 科目名,教师ID, 教师姓名)f
on f.科目名=e.科目名 and f.教师ID=e.教师ID and e.教师姓名=f.教师姓名 )
) N
ON N.HPL=M.HPL
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询