0

我试图给出这个查询:

select s_name, course from Student group by course;

但是我收到一个错误(ORA-00979 Not a GROUP BY EXPRESSION)。

我想列出同一门课程中所有学生的姓名。还有另一种方法吗?如果不是,实现此查询的正确方法是什么?如果有人能给我所需的确切代码,我将不胜感激。

4

2 回答 2

2

一种变体(Oracle 11g):

select course, listagg(s_name, ', ') within group (order by s_name) 
 from student
group by course; 

Oracle 10g(未记录的秘密函数wm_concat

select course, wm_concat(s_name)
 from student
group by course; 
于 2014-10-28T15:07:55.517 回答
1

对于你想要的,你不应该使用GROUP BY. GROUP BY 的目的是汇总每个组的信息。

由于您需要每门课程的详细信息,因此您应该使用它ORDER BY来确保您的输出简单地与同一课程中的学生一起列出。

select  s_name, course
from    Student
order by course

有关GROUP BY预期用途的示例,请尝试以下操作:

select  course, COUNT(*) as NumStudents
from    Student
group by course
于 2014-10-28T15:49:11.397 回答