1

私はこのようなデータを含むテーブルを持っています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

左結合は明らかにここで使用するトリックではありませんが、繰り返し行をスキップするにはどうすればよいでしょうか?

前もって感謝します!

4

1 に答える 1