とのことで私のテーブルには、以下のようになります。SQL:グループでは、二つの異なるクエリ
id sex mailsent_number click click_time
1466 female 1 1 2017-08-14 10:01:28
1467 female 1 1 2017-08-14 10:45:28
1468 female 1 NULL
1469 male 1 1 2017-08-14 10:11:28
1470 male 1 NULL
1471 male 0 NULL
次のクエリは、私が欲しいものは基本的に私を取得します:クリックした各性別の何と
select sex,
count(mailsent_number) - count(click) NoClick,
count(click) Click
from table group by sex;
リストクリックしなかった人の数が表示されます。電子メールを受け取ったことのない人はカウントされません。
ここでclick_timeでクリックをフィルタリングしたいと思います。その後、クリックの量は正しいですが、「いいえクリック」の量
select sex,
count(mailsent_number) - count(click) NoClick,
count(click) Click
from table where (click_time < '2017-08-14 10:30' or click_time is null) group by sex;
:だから私は、各性の多くは、2017年8月14日午前10時30分前にクリックされたどのように私はこれを行うかどうかを知りたいです10時30分以降にクリックしたユーザーはカウントされませんが、「クリックなし」とカウントする必要があります。
私は1つのクエリでどのようにその結果を得ることができるのか分かりません。
サブクエリを使用して、個々のクエリでメールを受け取った人の数を調べるだけでしたが、グループはもう動作しません。
ご迷惑をおかけして申し訳ございません。
お返事ありがとうございました。申し訳ありませんまだ編集中です。コピー/貼り付けエラーが発生しました。私は明らかに2番目の声明で "where句"を持っていますが、それは動作しますが、私が探している結果を私に与えることはありません。それはまた、行だけを見るので、私のwhere節にマッチする意味があります。しかし、私は電子メールを受け取ったすべての人を数える必要があり、その数から、私が選択した期間にちょうどクリックした人の数を取る必要があります。 –
上記のテーブルの値に基づいて、 'count(mailsent_number)-count(click)= ??'と 'count(click)= ??'の期待値を与えてください。 値1と0は考慮されるべきである、右か? – Mohamad
期待値はありません。click_time where節はありません:count(mailsent_number) - count(click)= 2、count(click)= 3、click_time where節をcount(mailsent_number) click_time> 10:30の1つのエントリがないため、count(mailsent_number) - count(click)= 2とcount(click)= 2を取得します。まったく数える –