2016-10-27 28 views
0

私は、ユーザーが最新の月(2016-08-01)に参加し、新しいスポーツに参加している人の数を数えます前の月。SQLは1つのテーブルの2つのレコードの値を比較します

MONTH  | ID | SPORT 
_________________________________________ 
2016-07-01 | 12 | Football 
2016-08-01 | 12 | Tennis 

2016-07-01 | 28 | Rugby 
2016-08-01 | 28 | Tennis 

2016-07-01 | 31 | Football 
2016-08-01 | 31 | Football 

したがって、上記の例では、2

以下のコードが間違っているのカウントを返しますが、私は、各ユーザーのみに参加する場合は、この

SELECT * FROM SPORTS WHERE currentmonth='2016-08-01' AND ID, SPORT NOT IN 
(SELECT * FROM SPORTS WHERE currentmonth='2016-07-01') 
+1

あなたはこれまで何を持っていますか? – Xatenev

+0

@ Xatenevが追加されました。 –

答えて

1

にアプローチする方法はわかりません毎月1回のスポーツでこのアプローチを使用することができます:

SELECT count(*) FROM(
    SELECT DISTINCT id, count(id) idno 
    FROM `mytbl` 
    WHERE `month` BETWEEN '2016-07-01' AND '2016-08-01' 
    GROUP BY id, sport) as subq 
WHERE subq.idno=1 

Here is a fiddle

月をハードコードしましたが、変数を変数に置き換える必要があります。

+0

私はそれが必要なのとまったく同じように働いた。ありがとう –

関連する問題