我有一個表具有以下數據(僅是一個實例,實際的表具有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