как мне считать данные плюс перечислять данные - PullRequest
0 голосов
/ 09 ноября 2018

Я очень, очень плохо знаком с SQL

Например, учащийся с 2 As и 3 C подготовит две записи: sid, A, 2; sid, C, 3. Если у ученика нет оценок, я не хочу, чтобы они были в списке

select sid, count(grade) from enrollments
group by sid

Пример того, что я хочу:

sid          grade
123          A,2; C,3
456          A,3; B,1

1 Ответ

0 голосов
/ 09 ноября 2018

Я думаю, это должно сработать для вас.

select sid, 
    listagg(gradecount, '; ') within group (order by gradecount) as grade
from (
    select sid, grade || ',' || count(1) as gradecount
    from enrollments
    where grade is not null
    group by sid, grade
    ) studentgradecount
group by sid;

Если это кажется запутанным, попробуйте выполнить внутренний запрос самостоятельно, чтобы увидеть, что он делает:

select sid, grade || ',' || count(1) as gradecount
from enrollments
where grade is not null
group by sid, grade
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...