How to get count (last 4 weeks records and week range) group by week range?
Week range means 22-28, 15-21,8-14, 1-7
I tried this
SELECT WEEK(PERIOD), SUM(CLICKS)
FROM TABLE
WHERE PERIOD >= NOW() - INTERVAL 4 WEEK
GROUP BY WEEK(PERIOD)
and
SELECT WEEKOFYEAR(`date`) AS period,
SUM(clicks) AS clicks
FROM `tablename`
WHERE `date` >= CURDATE() - INTERVAL 4 WEEK
GROUP BY period
If you mean last 4 weeks by exactly each 7 x 24 days prior to today, up to the second, then
SELECT CASE WHEN PERIOD >= NOW() - INTERVAL 4 WEEK
AND PERIOD < NOW() - INTERVAL 3 WEEK THEN '22-28 days ago'
WHEN PERIOD >= NOW() - INTERVAL 3 WEEK
AND PERIOD < NOW() - INTERVAL 2 WEEK THEN '15-21 days ago'
WHEN PERIOD >= NOW() - INTERVAL 2 WEEK
AND PERIOD < NOW() - INTERVAL 1 WEEK THEN '8-14 days ago'
WHEN PERIOD >= NOW() - INTERVAL 1 WEEK
THEN 'up to 7 days ago'
END WeekPeriod, IFNULL(SUM(CLICKS),0) TotalClicks
FROM TABLE
WHERE PERIOD >= NOW() - INTERVAL 4 WEEK
GROUP BY CASE WHEN PERIOD >= NOW() - INTERVAL 4 WEEK
AND PERIOD < NOW() - INTERVAL 3 WEEK THEN '22-28 days ago'
WHEN PERIOD >= NOW() - INTERVAL 3 WEEK
AND PERIOD < NOW() - INTERVAL 2 WEEK THEN '15-21 days ago'
WHEN PERIOD >= NOW() - INTERVAL 2 WEEK
AND PERIOD < NOW() - INTERVAL 1 WEEK THEN '08-14 days ago'
WHEN PERIOD >= NOW() - INTERVAL 1 WEEK
THEN '01 to 7 days ago'
END
ORDER BY WeekPeriod