簡體   English   中英

從幾行的列總和中創建一個新列 - Mysql

[英]Making a new column from the sum of columns from few rows - Mysql

我制作了 select 查詢,該查詢填充了以下 output -

在此處輸入圖像描述

如果我們在上面的行中看到,我們可以在這里看到 3 個部分(由虛線分隔)。 每行都有 3 個屬性( dptqnoption_choice.id )是唯一的如果我們查看每個部分的votes列,我們可以看到 -

第 1 節: (3+62+1)=66
第 2 節: (9+1+28+25)=63
第三節: (20+29+1+2+8)=60

這意味着問題 1,2 和 3 分別獲得了 66、63 和 60 票。 我想在votes之后添加第 5 列, total_votes ,這將代表每個組的總票數,如下所示 -
在此處輸入圖像描述

我已經嘗試過使用累積和技術可以幫助我如何做到這一點? 這是我的工作查詢(產生第一張圖片的結果) -

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;          

你要:

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

我不打算碰查詢的 rest。 只要說您應該使用正確、明確、標准、可讀的JOIN語法就足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM