我有一个表具有以下数据(仅是一个实例,实际的表具有60万行)(援助=访问ID [主键]和id =用户ID [外键):如何根据日期返回新ID?
aid | id | date
332 | 1 | 2016-12-15
331 | 4 | 2016-12-15
330 | 3 | 2016-12-15
329 | 1 | 2016-12-14
328 | 1 | 2016-12-14
327 | 2 | 2016-12-14
326 | 3 | 2016-12-13
325 | 2 | 2016-12-13
324 | 1 | 2016-12-13
323 | 1 | 2016-12-12
322 | 3 | 2016-12-12
321 | 1 | 2016-12-12
每个ID是一个用户主键,每次他们访问我系统中的某些东西时,我都将它们记录在这张表中(日期格式如图所示,以及它们的ID)。用户可以每天登录多次。
我期待的是:返回一天内访问该事物的总次数,并返回在过去8天内访问过该事物的新用户的总数每天都会被记录下来,所以使用“LIMIT 8”对于只有最后8天是可以的)。
我的SQL目前是这样的:
SELECT COUNT(id), COUNT(distinct id), date
FROM table
GROUP BY date
ORDER BY date DESC
LIMIT 8;
这SQL正确做的第一部分,但我无法弄清楚如何得到它的返回谁从来没有访问的东西,直到用户数天。
期望的结果会是这样,一个“NEWUSER”代表ID为“4”的用户,因为他们从来没有访问之前的事情:
COUNT(id) | newusers | date
3 | 1 | 2016-12-15
3 | 0 | 2016-12-14
3 | 0 | 2016-12-13
3 | 0 | 2016-12-12
很抱歉,如果我没有解释不够这一点。
那么它应该显示'2'的'12-12-2016'和'1'为'13-12-2016',因为它们是第一次访问,对吧? –
(除非日期真的是日期时间),您没有PRIMARY KEY,这可能会在适当的时候出现问题。 – Strawberry
虽然用户1,2和3在12-12-2016之前都已经访问过。 – Enstage