Создание нового столбца из суммы столбцов из нескольких строк - Mysql - PullRequest
0 голосов
/ 06 апреля 2020

Я сделал запрос выбора, который заполняет следующий вывод -

enter image description here

Если мы увидим в строках выше, мы можем увидеть 3 раздела здесь ( разделены пунктирной линией). Каждая строка уникальна по 3 атрибутам (dpt, qn и option_choice.id). Если мы посмотрим на столбец votes для каждого раздела, мы увидим -

раздел 1 : (3 + 62 + 1) = 66
раздел 2: (9 + 1 + 28 + 25) = 63
раздел 3: (20 + 29 + 1 + 2 + 8) = 60

Это означает, что вопросы 1,2 и 3 получили 66, 63 и 60 голосов соответственно. Я хочу добавить 5-й столбец, скажем total_votes сразу после votes, который будет представлять общее количество голосов каждой группы, как эта -
enter image description here

I ' мы уже пробовали метод накопленной суммы Может кто-нибудь помочь, как я могу это сделать? Вот мой рабочий запрос (который дал результат первого изображения) -

SELECT s.current_department_code as dpt
     , q.sn
     , oc.text option_choice
     , COUNT(jqooc.question_option_id) votes_per_option
FROM answers a
     , surveyors s
     , question_options qo
     , questions q
     , jt_question_options_option_choices jqooc 
     , option_choices oc
 WHERE a.surveyor_id = s.id
  AND a.question_option_id = qo.id
  AND qo.question_id = q.id
  AND qo.id = jqooc.question_option_id
  AND jqooc.option_choice_id = oc.id
GROUP  
    BY
    dpt
     , q.sn
     , jqooc.option_choice_id
     , option_choice
ORDER 
    BY  dpt ASC
     , q.sn ASC
     , option_choice ASC;          

1 Ответ

2 голосов
/ 06 апреля 2020

Вы хотите:

SELECT s.current_department_code as dpt, q.sn, oc.text option_choice,
       COUNT(*) as votes_per_option,
       SUM(COUNT(*)) OVER (PARTITION BY s.current_department_code, q.sn) as question_total

Я не буду касаться остальной части запроса. Достаточно сказать, что вы должны использовать правильный, явный, стандартный , читаемый JOIN синтаксис.

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