-4

「メンバー」と「質問」の2つのテーブルがあります。各メンバーは複数の質問をすることができます。

3 つ以上質問されたメンバーの数を取得したい

これまでの私のクエリ:

SELECT DISTINCT  q.question_id, COUNT( q.question_id ) AS question_id_count
FROM member m

inner join question q on m.member_id = q.member_id

GROUP BY m.member_id
HAVING (
COUNT( q.question_id ) >3
)

このクエリを改善するにはどうすればよいですか? ありがとうございました

4

2 に答える 2

2

これは正しくありません。

メンバーごとにグループ化している場合は、メンバーを表示する必要があります。

これdistinctは不要です。メンバーごとに 1 回だけ表示されます (メンバーを繰り返している場合を除きます!)。

このコメントを考慮すると:

4 つ以上の質問をしたメンバーの数、または 3 つ以上の質問をしたメンバーごとの質問の数を取得しますか?

最初のオプションは

select count(*) from 
(SELECT m.member_id 
    FROM member m
    inner join question q on m.member_id = q.member_id
    GROUP BY m.member_id
    HAVING COUNT(q.question_id) >3) T

2番目のオプションは

SELECT m.member_id, COUNT( q.question_id ) AS question_id_count
FROM member m
inner join question q on m.member_id = q.member_id
GROUP BY m.member_id
HAVING COUNT(q.question_id) >3
于 2012-09-06T14:21:16.493 に答える
0

ステートメントに基づいてi want to retrieve count of member whose asked more than 3 question、テーブルを結合し、グループ化しmemberIDます。

SELECT  a.member_id, count(b.member_id) totalQuestion
FROM    member a
        INNER JOIN question b
            ON a.member_id = b.member_id
GROUP BY a.member_id
HAVING count(b.member_id) > 3

この条件でわかるように、 をON a.member_id = b.member_id介して 2 つのテーブルをリンクしますmemberID( columnName をテーブルに存在する名前に自由に変更できます) 。

于 2012-09-06T14:23:46.783 に答える