0

私はこのクエリを提供しようとしています:

select s_name, course from Student group by course;

しかし、エラーが発生します (ORA-00979 GROUP BY EXPRESSION ではありません)。

同じコースにいるすべての学生の名前をリストしたいと思います。これを行う別の方法はありますか?そうでない場合、このクエリを実装する適切な方法は何ですか? 必要な正確なコードを教えていただければ幸いです。

4

2 に答える 2

2

1 つのバリアント (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 に答える