SQL Query在连接中进行分组

时间:2013-12-10 23:35:01

标签: sql postgresql

我有一个包含学生ID,课程ID和教师ID的注册表。

___________________
| sID | cID | tID |
___________________
| 1   | 1   |  1  |
| 1   | 2   |  2  |
| 1   | 3   |  3  |
| 2   | 1   |  1  |
| 2   | 3   |  5  |
| 3   | 1   |  1  |
| 3   | 2   |  2  |

我想得到一张表格,可以告诉我每个课程中有多少学生和一位教授。换句话说,我想这样:

_____________________________
| cID | tID | numOfStudents |
____________________________
| 1   | 1   |       3       |
| 2   | 2   |       2       |
| 3   | 3   |       1       |
| 3   | 5   |       1       |

我试过

SELECT cID, tID, count(sID) 
FROM enrollment 
GROUP BY tID

但是这种不同组合的配方对我不起作用。有没有人有任何其他建议?

2 个答案:

答案 0 :(得分:2)

只需将cid添加到GROUP BY:

SELECT cID, tID, count(*) 
FROM enrollment 
GROUP BY cid,tID

sqlfiddle demo

来自docs

  

当GROUP BY存在时,它对SELECT列表无效   用于引用未聚合列的表达式,但在聚合中除外   函数,因为将返回多个可能的值   对于未分组的列。

答案 1 :(得分:0)

SELECT cID,tID,count(sID) 从入学 GROUP BY 1,2