我正在尝试提供此查询:
select s_name, course from Student group by course;
但我收到错误(ORA-00979不是GROUP BY EXPRESSION)。
我想列出同一课程中所有学生的姓名。 还有另一种方法吗?如果没有,实现此查询的正确方法是什么?如果有人能给我所需的确切代码,我将不胜感激。
答案 0 :(得分: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;
答案 1 :(得分: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