2017-09-01 96 views
1

我有两个表运行查询

  • 大学(UnivId,UnivName)
  • 研究生(EMPID,UnivId,GradYear)

我需要创建一个返回如下结果的查询:

其中每个大学显示雇员人数gra来自学校的钟声。

我想我可以得到UnivName:

select DISTINCT University.UnivName 
from University, Graduate 
where University.UnivId = Graduate.UnivId; 

和员工从数量:

select sum(EmpId) from Graduate where UnivId = 'x'; 

我知道这是很初级的问题,感谢您的帮助!

+0

您学到INNER JOIN了吗? –

+0

显然,您正在使用80年代的书籍或教程。让自己更新一些,忘掉旧的连接sysntax('from University,Graduate'),并使用适当的ANSI连接('from University University inner join Graduate on University.UnivId = Graduate.UnivId')。在使用多个表格时使用别名也是一个好主意:(来自大学,内部联合毕业生在u.UnivId = g.UnivId上)。 –

+0

您希望每个组(每个大学)的总数(计数)。你有学过'GROUP BY'吗? –

回答

1

您参加由UnivId表和EMPID

SELECT u.UnivName, 
     COUNT(g.EmpId) NumOfEmployees 
    FROM Univeristy u 
    JOIN Graduate g 
    ON u.UnivId = g.UnivId 
GROUP BY u.UnivName 
0

你应该尝试LEFT算员工人数JOIN像下面

SELECT 
U.UnivName, 
ISNULL(Count(1),0) NUMOFEMPLOYEES 
FROM University U LEFT JOIN Graduate G 
ON U.UnivId = G.UnivId 
GROUP BY U.UnivName;