mysql打印名称和大多数课程中注册的学生的sid

时间:2015-04-11 02:28:25

标签: mysql sql database database-schema

表:

  • 学生(sid,sname,sex,age,year,gpa)
  • dept(dname,numphds)
  • prof(pname,dname)
  • 当然(cno,cname,dname)
  • major(dname,sid)
  • 部分(dname,cno,sectno,pname)
  • 注册(sid,年级,dname,cno,sectno)

问题: 5.打印大多数课程中注册的name的{​​{1}}(s)和sid个。

student

我一直有不同的错误。内部循环在独立运行时给出了数据库中的最大值,但是一旦我把它放在一起就会出现语法错误和错误分组

编辑:其他问题: 10.打印最老和最年轻的计算机科学专业的年龄差异。

  1. 对于每个拥有一个或多个GPA低于1.0的专业的部门,请打印部门名称及其专业的平均GPA。
  2. 打印目前正在参加所有土木工程课程的学生的ID,名称和GPA。
  3. 已经坚持了一段时间。任何帮助将不胜感激。

    示例数据

    select s.sname, s.sid, count(*) 
    from student s, enroll e 
    where s.sid = e.sid 
    having count(*) = (select max(counted) 
                       from (
                            select count(*) as counted 
                            from student s, enroll e 
                            where s.sid = e.sid 
                            group by s.sname
                            ) as counts
                       ) 
    group by sname;
    

3 个答案:

答案 0 :(得分:0)

后应

select Artists_id,count(*)
from dbo.Artits a,Author b
where a.Artists_id=b.au_id
group by Artists_id  --  put here
having count(*) = 
( 
    select max(counted) 
    from 
    (
        select COUNT(*) as counted  from dbo.Artits a,Author b
        where a.Artists_id=b.au_id
        group by Artists_id
    ) as counts
) 

答案 1 :(得分:0)

得到第一个:

  1. 打印最老和最年轻的计算机科学专业之间的年龄差异。

    选择((从学生s中选择max(s.age),在s.sid = m.sid和m.dname ='Computer Sciences'中选择主要m) - (从学生s1中选择min(s1.age),主要的m1,其中s1.sid = m1.sid和m1.dname ='计算机科学'))作为差异;

  2. 现在只需要其他2人,如果有人可以提供帮助

答案 2 :(得分:0)

SELECT sname,sid 来自学生 在哪里(     SELECT sid FROM注册GROUP BY sid HAVING COUNT()> = ALL(         SELECT COUNT()FROM注册GROUP BY sid     ) )