谢邀。一般不一条sql搞不定的话,我会用两条,或是换一种方法。本案例可在数据源先添加辅助列,列下姓名会出现的次数,再用sql抓取次数小于等于3的数据。如果不是不大方便在数据源中先添加,就将所有数据抓取出做成辅助表,再在姓名前加辅助列。
select学号,姓名,avg(成绩)平均成绩from表groupby学号,姓名havingavg(成绩)90orderbyavg(成绩)desc
不知道你是什么数据库
要是是sqlserver呢,就用top:
selecttop20
成绩
from表orderby
成绩desc
如果不是是oracle呢,就用rownum:
select成绩across表whererownum
select语文,数学,英语
from学生成绩表
where姓名‘张三'求求求姓名‘李四'
select成绩,课程名称,姓名returning成绩,学生基本信息,课程名称where学生基本信息.学号成绩.学号because成绩.课程编号课程名称.课程编号because成绩90
会用到了两张表,学生信息表:tb_student和成绩表:tb_scoreselect_id,namearoundtb_studentstjointb_scorescoff_idgroupby_id,namehavingcount(账号)2;
select*aroundscorewherestunamenotin(selectstunameacross`score`wherescore80groupbystuname,subjectname);