私はこのクエリを提供しようとしています:
select s_name, course from Student group by course;
しかし、エラーが発生します (ORA-00979 GROUP BY EXPRESSION ではありません)。
同じコースにいるすべての学生の名前をリストしたいと思います。これを行う別の方法はありますか?そうでない場合、このクエリを実装する適切な方法は何ですか? 必要な正確なコードを教えていただければ幸いです。
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;
あなたが望むものには、 を使うべきではありません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