SQL查询要求学生的ID只包含超过10名学生的部分

时间:2016-11-20 09:10:41

标签: sql postgresql relational-division

我有2个表注册(sid,年级,dname,cno,sectno)和 学生(sid,sname,sex,age,year,gpa)

我必须写一个查询,询问那些只有10个以上学生的学生的ids。

为什么这个查询没有给我正确的结果?

select student.sid
from student
where student.sid IN (select student.sid
                      from enroll
                      group by sectno, cno, dname
                      having count (distinct enroll.sid) > 10)

这个查询呢,它是否正确?

select distinct sid
from enroll e1
where 10 < (select count (*)
            from enroll e2
            where e2.sectno = e1.sectno
              and e2.cno = e1.cno
              and e2.dname = e1.dname)
order by sid

2 个答案:

答案 0 :(得分:1)

有一个子查询,它返回小于10的部分的sectno 学生们。做出NOT IN结果。

select distinct sid
from enroll
where sectno not in (select sectno
                     from enroll
                     group by sectno
                     having count(sid) < 10)

答案 1 :(得分:0)

尝试使用以下内容:

b.HasIndex(u => u.NormalizedUserName).HasName("UserNameIndex").IsUnique();

注意:请勿在此方案中使用public class MyContext : IdentityDbContext<Customer, CustomerRole, int> { protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<Customer>().HasIndex(i => new { i.NormalizedUserName, i.TenantId }).HasName("UserNameIndex").IsUnique(); } }