![](/img/trans.png)
[英]SQL/MYSQL /Transpose table / Columns into rows and rows sum as column with new header
[英]Making a new column from the sum of columns from few rows - Mysql
我制作了 select 查詢,該查詢填充了以下 output -
如果我們在上面的行中看到,我們可以在這里看到 3 個部分(由虛線分隔)。 每行都有 3 個屬性( dpt
、 qn
和option_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.