0

我之前关于连接的问题之后,我现在在连接和使用计数功能进行比较时遇到了问题。

我有一张名为主题的表

subno   subname   quota
30006   Math      300    
31445   Science   400 
31567   Business  250

我还有一张叫注册的表

subno sno   
30009 980008
4134  988880
31567 900890

等(在此处转换为 SQLFiddle:http ://sqlfiddle.com/#!12/dcd01 -- Craig)

我如何列出配额小于学科平均配额的学科编号和名称。这意味着我需要计算一张表中的学生人数并与另一张表进行比较对吗?

4

2 回答 2

2

在最终确定问题(从评论中推断)为:

列出所有有空缺的科目

您需要的查询是:

select
    subno,
    subname,
    quota,
    quota - count(sno) as vacancies
from subjects s
left join enrollments e on e.subno = s.subno
group by 1, 2, 3
having quota - count(sno) > 0

我还添加了一列vacancies,显示剩余的空缺数量。

注意:您拼错了“enrolments”(正确的拼写只有一个L)-我建议您将表格重命名为正确的拼写以避免将来混淆。

于 2013-04-26T05:25:11.937 回答
0
select a.subno,b.subname 
from
(select subno, count(sno) as cnt from enrollment
group by 1
having count(sno)<(select avg(quota) from subjects)
) as a 

inner join 

(select * from subjects) as b 
on a.subno=b.subno
于 2013-04-26T20:21:29.443 回答