我正在尝试查看最近一个月(2016-08-01)用户参与的当前运动,并计算上个月参加新运动的人数。
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')
答案 0 :(得分: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
我已经对月份进行了硬编码,但你应该用变量替换它们。