@aassdds
Люблю борщ и PHP

Как выбрать кол-во записей по каждой неделе?

День добрый !

Суть вопроса:
Есть таблица с такими вот полями:
id (int 11) PK
status (int 1)
date (varchar)

в status - или 0 или 1 - ( по умолчанию 0 )
в date записываю дату через пхп, функцией date("d-m-Y") когда статус переписывается в 1 (активация)

вопрос:

нужна функция, которая покажет - сколько активаций произошло каждую НЕДЕЛЮ....

Саму функцию писать не надо, хватило бы и sql запроса
Но что то мне подсказывает, что одним sql запросом все готовое сложно будет вытащить )
В общем буду рад любой помощи
  • Вопрос задан
  • 168 просмотров
Пригласить эксперта
Ответы на вопрос 3
как-то так
SELECT str_to_date(t.`date`, '%d-%m-%Y') - interval mod(dayofweek(str_to_date(t.`date`, '%d-%m-%Y'))+5, 7) day as week_start, count(*) as cnt
FROM yourtable t
WHERE t.status=1
GROUP BY week_start
Ответ написан
Комментировать
дату хранить в строке это плохо.
а запрос примерно такой (не пробовал):
select count(*), WEEK(date) as w from table GROUP BY w
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
1. Поле date лучше переименовать. Это зарезервированное слово. https://dev.mysql.com/doc/refman/5.0/en/keywords.html

2. Тип поля сменить с varchar на date - без вариантов.

3.
SELECT 
   DATE_FORMAT(`date`, "%Y W%u") as w, 
   count(*) 
FROM `table` 
GROUP BY DATE_FORMAT(`date`, "%Y W%u")
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы