выберите сумму max в sqlite - PullRequest
       0

выберите сумму max в sqlite

0 голосов
/ 25 февраля 2020

Исходя из следующей схемы таблицы, я хочу иметь возможность выбрать сумму максимума для каждого представления. Студент может иметь несколько заявок на участие в конкурсе, поэтому их общий балл является суммой максимального балла каждого конкурса. Прямо сейчас мой запрос выбирает student_id, имя и максимальный балл всех их конкурсов, как я могу получить сумму максимума всех их конкурсов? Ожидаемый результат на основе ввода должен быть:

select student_id, name, max(score) as TotalScore
from students2 as st
join submissions as s
where st.student_id = s.student_id
group by st.student_id, name
having count(*) > 1
order by TotalScore desc;

Ответы [ 2 ]

1 голос
/ 25 февраля 2020
select student_id, name, sum(TotalScore) total_sum
from (select st.student_id student_id
             , name 
             , max(score) as TotalScore
from students as st
join submissions as s
on st.student_id = s.student_id
group by s.contest_id, s.student_id)
group by student_id;

Вот демо

Я начал создавать демо перед вашими примерами данных ...

Из вашего текста в вашем вопросе я сделал не понял, для чего вам нужно having count(*) > 1, поэтому я не использовал его.

Обратите внимание : я использовал students в качестве имени таблицы, а не students2.

0 голосов
/ 25 февраля 2020

Используйте два уровня агрегации:

select student_id, name, sum(max_score) as TotalScore
from students2 st join
     (select s.student_id, max(score) as max_score
      from submissions s
      group by s.student_id
     ) s
     on st.student_id = s.student_id
group by st.student_id, name
having count(*) > 1;
order by TotalScore desc;

Я заметил, что ваше предложение FROM использует JOIN, но отсутствует предложение ON. Вы должны привыкнуть всегда включать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...