我有2个关于使用2个表的sqlite3查询的问题

时间:2019-03-15 14:47:22

标签: sqlite

Questions are based on this image

A)按照讲师姓名的顺序列出每个讲师及其所教的每个模块以及学习该模块的学生人数。

B)输出每个人都通过该模块的模块数(假设通过标记为40)。

1 个答案:

答案 0 :(得分:0)

对于A,您需要先连接2个表,然后group by lecturer, module并计算每个组的行数(每行对应一个学生):

select t.lecturer, t.module, count(*) numberofstudents
from teaches t inner join studies s
on s.module = t.module
group by t.lecturer, t.module
order by t.lecturer

对于B,使用NOT EXISTS查找所有成绩均为>= 40的模块并计数:

select count(distinct module) numberofmodules
from studies s
where not exists (
  select 1 from studies 
  where module = s.module and grade < 40
)