[英]SQL: Group by with two different queries
我的桌子看起来像这样:
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过滤点击。 因此,我想知道在2017-08-14 10:30之前,每种性别点击了多少次:
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;
那么点击量仍然是正确的,但是“没有点击”的数量是错误的,因为根本不算在10:30之后点击的人,而应该算作“没有点击”。
我不知道如何在一个查询中得到该结果。
我尝试使用子查询来查找单个查询中有多少人收到了该电子邮件,但是group by不再起作用。
任何帮助,将不胜感激。
我假设您想要的逻辑是where
子句:
select sex, count(mailsent_number) - count(click) as NoClick,
count(click) as Click
from table
where click_time < '2017-08-14 10:30' or click_time is null
group by sex ;
您的查询似乎起作用的原因是因为MySQL将sex and click_time < '2017-08-14 10:30' or click_time is null
为布尔表达式,其结果为true或false。 这将产生两行,但对于sex
每个值都没有一行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.