Есть таблица клиентов, где указана дата регистрации в системе. Необходимо вытащить статистику по регистрации понедельно за каждый месяц, с группировкой по company_id. ВАЖНО, чтобы недели считались по числам 01-10, 11-17, 18- 24, 25-31. В колонках должен быть count() и GROUP_CONCAT(clients.id).
Пробовал так: http://sqlfiddle.com/#!9/7df063/10
Проблема в том, что WEEK это номер недели, числа он в расчет не берет. В идеале на выходе должно получиться так:
ВАЖНО, чтобы недели считались по числам 01-10, 11-17, 18- 24, 25-31
SELECT
company_id,
YEAR(dt) AS `year`,
MONTH(dt) AS `month`,
CASE WHEN DAY(dt) < 11 THEN 1
WHEN DAY(dt) < 18 THEN 2
WHEN DAY(dt) < 25 THEN 3
ELSE 4 END AS `week_number`,
count(id) AS `cnt`,
GROUP_CONCAT(id ORDER BY id) AS `client_list`
FROM clients
GROUP BY 1,2,3,4
ORDER BY 1,2,3,4;
fiddle
Продвижение своими сайтами как стратегия роста и независимости