WITH 専攻別履修者数(科目番号,専攻,人数)
AS ( SELECT 科目番号,専攻,COUNT(*)
FROM 学生 NATURAL JOIN 履修
GROUP BY 科目番号,専攻 )
SELECT 科目番号
FROM 専攻別履修者数 AS x
GROUP BY 科目番号
HAVING 0.5*SUM(x.人数)>ALL
( SELECT y.人数
FROM 専攻別履修者数 AS y
WHERE y.科目番号=x.科目番号 )