私はこのようなデータを含むテーブルを持っていますh
(OK、実際にはそうではありません、それは単なる例です):
subj_id q1 q2 q3 q4 q5 q6 num
1 1 0 0 1 0 0 1
1 0 0 0 1 0 0 2
2 1 1 1 1 0 1 1
2 1 0 0 1 0 0 2
2 1 1 1 0 0 1 3
3 0 1 0 0 1 1 1
それぞれのqを合計すると、次のsubj_id
ような出力になります。
subj_id num1 num2 num3
1 2 1 null
2 5 2 4
3 3 null null
しかし、代わりに次のようになります。
subj_id num1 num2 num3
1 2 1 null
1 2 1 null
2 5 2 4
2 5 2 4
2 5 2 4
3 3 null null
合計された行は、テーブルに表示される回数だけ繰り返されsubj_id
ます。
私のクエリ (postgres) は次のようになります。
select h.subj_id, n1.sum as num1, n2.sum as num2, n3.sum as num3 from ((( h
left join (select subj_id, q1+q2+q3+q4+q5+q6 as sum from h where num=1) as n1 on h.subj_id=n1.subj_id)
left join (select subj_id, q1+q2+q3+q4+q5+q6 as sum from h where num=2) as n2 on h.subj_id=n2.subj_id)
left join (select subj_id, q1+q2+q3+q4+q5+q6 as sum from h where num=3) as n3 on h.subj_id=n3.subj_id) order by h.subj_id
左結合は明らかにここで使用するトリックではありませんが、繰り返し行をスキップするにはどうすればよいでしょうか?
前もって感謝します!