2

ステータス 3 のアクティビティを持っている人の数を調べるためのクエリを作成しようとしています。COUNT または SUM のいずれかが必要だと思いますが、以前にこれを行ってから長い時間が経過し、多くの検索を試みました。しかし、まだ混乱しています。私が次のものを持っているとしましょう。

活動表:

activity_id  status
1             3
2             3
3             1

Person_activity テーブル:

person_id  activity_id
1            1
1            2
2            2
2            3 
3            3

クエリを出力したい:

person_id   no_of_status_3
1             2
2             1
3             0

どんな提案でも大歓迎です。前もって感謝します。

4

2 に答える 2

4

これは次のことを行う必要があります。

SELECT  PA.person_id,
        COUNT(A.activity_id) no_of_status_3
FROM Person_activity PA
LEFT JOIN ( SELECT *
            FROM Activity
            WHERE status = 3) A
    ON PA.activity_id = A.activity_id
GROUP BY PA.person_id

これは、これのデモを含む sqlfiddleです。結果は次のとおりです。

╔═══════════╦════════════════╗
║ PERSON_ID ║ NO_OF_STATUS_3 ║
╠═══════════╬════════════════╣
║         1 ║              2 ║
║         2 ║              1 ║
║         3 ║              0 ║
╚═══════════╩════════════════╝
于 2013-11-13T20:59:28.667 に答える
1
SELECT pa.person_id, count(a.activity_id)
FROM person_activity pa
LEFT JOIN activity a ON (pa.activity_id = a.activity_id AND a.status = 3)
GROUP BY pa.person_id
于 2013-11-13T20:59:22.437 に答える