2011-05-31 69 views
2

我需要得到下述比例(每天註冊數)/(最近30天滾動報名數的每一天)滾動計數在MySQL

每天的數字是直線前進

SELECT a.DailySignup 
FROM 
(
SELECT COUNT(1) AS DailySignup, date 
FROM users 
WHERE date BETWEEN datestart and dateend 
GROUP BY date 
) a 

但是我怎樣才能計算每天的最後30天計數?我知道我需要再次參加同一張桌子,但我似乎無法圍繞它如何。

UPDATE 對不起,我不是很清楚。

SIGNUP_COUNT DATE   Rolling_Signup_Count 
10   2011-01-01 Sign ups from 2010-12-01 to 2011-01-01 
12   2011-01-02 Sign ups from 2010-12-02 to 2011-01-02 
4   2011-01-03 Sign ups from 2010-12-03 to 2011-01-03 

希望此表有助於說明通過滾動註冊數

+0

究竟什麼叫「過去30天計算每天的」是什麼意思?這是過去30天的平均每日點數嗎(即過去30天內的總註冊量除以30)?請給出數學定義。 – outis 2011-05-31 09:31:22

+0

@outis更新了我的問題 – super9 2011-05-31 09:37:09

回答

2

你可以嘗試子查詢:

SELECT DISTINCT t.date, 
(SELECT COUNT(*) FROM users u where u.date BETWEEN DATE_ADD(t.date, INTERVAL -30 day) AND t.date) as c 
FROM users t 

對於給定日期t.date,子查詢會計算計算以t.date結尾的30天期限。

編輯:要計算比率(每天登錄)/(30天內登錄),你可以嘗試

SELECT t.date, count(*)/(SELECT COUNT(*) FROM users u 
     WHERE u.date BETWEEN DATE_ADD(t.date, INTERVAL -30 day) AND t.date) as c 
FROM users t GROUP BY t.date 
0

我的意思你可以通過MONTH(date)得到每個月份組,嘗試這樣的事情:

SELECT a.DailySignup, month AS MONTH(date) 
FROM users 
INNER JOIN (
    SELECT COUNT(*) AS DailySignup, MONTH(date) AS month 
      FROM users 
    GROUP BY MONTH(date) 
) a ON a.month = month 
    GROUP BY month