質問のあるテーブルがあります。各行は質問であり、すべての質問にはasked_byフィールドとanswer_byフィールドがあります。「質問者」と「回答者」のユニークな組み合わせをすべて選択し、この質問/回答の組み合わせが何回発生したかを数えたいと思います。
question_tbl:
id | asked_by | answered_by | session
--------+----------+-------------+---------
1 | AA | JD | 2011-2012
2 | JD | AA | 2011-2012
9 | AA | JD | 2011-2012
12 | AA | JD | 2009-2010
セッション内の一意の組み合わせと、この組み合わせのカウントを返したいです。
例: 2011-2012:
AA, JD, 2
JD, AA, 1
PS: 理想的には、これを django orm 用に書きたいと思いますが、これに対して賢明な Google 検索を作成する方法さえわからないので、SQL の方法を見つけることが私の目標です。
問題が解決した後の注意: これは SQL で非常に簡単であることが判明したため、Djangos ORM でも非常に簡単であることが判明しました。後で記録するためにここに残しておきます。
from django.db.models import Count
from myproject.models import Questions
Questions.objects.filter(sesjonid='2011-2012').values('sporsmal_til', 'sporsmal_fra').annotate(count=Count('besvart_av'))
それがSQLでどのように見えるかをテストすることで、(./manage.pyシェルで)修正するように思えます:
print str(Questions.objects.filter(sesjonid='2011-2012').values('sporsmal_til', 'sporsmal_fra').annotate(count=Count('sporsmal_til')).query)
これは、Bohemians とまったく同じことを行う SQL を出力します。