Как реализовать ежедневные, еженедельные, ежемесячные и годовые отчеты в анализе данных MySQL?

MySQL

Принятие дней в качестве статистического периода является общим требованием. Еженедельные и ежемесячные отчеты являются более распространенными потребностями. Для долгосрочных проектов даже требуется годовой отчет. я освоилmysqlКак реализовать годовую, ежемесячную и еженедельную статистику в ежедневной статистике?

1. Освоенные навыки: Статистика по дням

Просто реализовать статистический период в днях. Конкретно,date()Функция может возвращать дату данных времени, то есть только год, месяц и день, без информации о часах, минутах и ​​секундах. комбинироватьgroup byСтатистику можно получить по дням.

Есть много показателей данных, которые принимают дни как статистический период, Просто возьмем пример, например, количество новых зарегистрированных пользователей каждый день.

select
    date(created_at) as 注册日期,
    count(user_id) as 用户数
from
     users
group by
    注册日期
order by
    注册日期

image

2. Делайте выводы из известного, расширяйте навыки

теперь, когдаdate()функция доступна, то есть ли соответствующийyear,month,weekА как насчет других доступных функций? Это чисто мои рассуждения, так что попробуйте.

image

Конечно же. Но ложка дегтя в том, что недели и месяцы возвращаются без года. Когда объем данных охватывает годы, он суммирует данные за одинаковое количество недель или месяцев в каждом году. Как добиться某年某月и某年某周Шерстяная ткань? Если у вас есть запас знаний, чтобы рассуждать, если вы не найдете ответа, просто поищите его!

3. Поиск ответов

После поиска и попытки найти в mysql используйтеdate_format(column_name,'%Y-%m')заменитьmonth()может получить年月ценность.

image

Если вы поместите ключевое слово, представляющее месяц месяцmКак насчет недели? Попробуйте. Попробуйте отдельно:date_format(column_name,'%Y-%w')иdate_format(column_name,'%Y-%W').

image

Результат возврата данных неверен? Не ожидаемые недели года. нижний регистрwВозвращает день недели с заглавной буквыWВозвращает английское название дня недели. как получить今年第几周Это значение, реализовать статистический цикл еженедельного отчета?

4. Будьте в курсе нехватки очков знаний, проверяйте пропуски и заполняйте пробелы

Когда я учился программированию, мне нравилось рассуждать на основе того, что я уже знал, и расширять свои навыки. Обычно рассуждения могут преподнести сюрпризы.Когда рассуждений недостаточно, полезно искать Дафа. При поиске ответа на тот или иной вопрос часто можно обнаружить недостаток знаний. Например, здесь я понимаю, что не знаком с ключевыми словами или общим синтаксисом для выражения дат.

наткнулся при поиске66 статей, который хорошо организован.

Формат даты MySQL (формат) диапазон значений.

ценность значение
второй %SS Секунды в виде двух цифр (00,01, ..., 59)
Минута %я, %я Две цифры минут (00,01, ..., 59)
Час %H 24-часовой формат, двузначный час (00,01, ...,23)
%h 12-часовой формат, двузначный час (00,01,...,12)
%k 24-часовой формат, количество часов (0,1,...,23)
%l 12-часовой формат, часы в числовой форме (0,1,...,12)
%T 24-часовой формат времени (ЧЧ:мм:сс)
%r 12-часовой формат времени (чч:мм:сс AM или PM)
%p AM AM или PM PM
неделю %W Название каждого дня недели (воскресенье, понедельник, ..., суббота)
%a Сокращение названия каждого дня недели (Вс,Пн,...,Сб)
%w Обозначает неделю как число (0=воскресенье, 1=понедельник, ..., 6=суббота)
%U Число указывает номер недели, причем воскресенье является первым днем ​​недели.
%u Число указывает номер недели, где понедельник — первый день недели.
небо %d Две цифры дня месяца (01,02,...,31)
%e Цифры обозначают количество дней в месяце (1,2,...,31)
%D Английский суффикс указывает на количество дней в месяце (1-й, 2-й, 3-й...)
%j День года в виде трех цифр (001 002, ..., 366)
Луна %M Английское название месяца (январь, февраль,..., декабрь)
%b Сокращенное название месяца (Jan, Feb, ..., Dec)
%m Две цифры месяца (01,02,...,12)
%c Цифры обозначают месяцы (1,2,...,12)
год %Y Четырехзначный год (2015, 2016...)
%y Двузначный год (15,16...)
вывод текста %Слово текст прямого вывода

Повышение одного балла знаний до определенного балла знаний может вывести ваши знания и навыки на более высокий уровень.

5. Обращение за помощью также является социальным, прося людей прикрепить красные конверты

Приведенная выше таблица весьма полезна, но по-прежнему не отвечает на вопрос о том, как получить «неделю года».

Хотя это хорошая привычка активно искать ответ. Но я потратил много времени и не смог найти ответ, а есть люди, у которых одна цель помогать друг другу, почему бы не попросить людей это увидеть? Обучение – это, по сути, социальный акт. Когда я изучаю навык, мне нравится присоединяться к нескольким учебным группам с хорошей атмосферой. Я часто делюсь своими заметками о собственном опыте в группе, а также беру на себя инициативу помогать другим, чем могу, или задаю свои вопросы, чтобы вызвать обсуждение. Просить о помощи — это хорошее социальное поведение.

На этот раз я поделился своими сомнениями с группой по изучению программирования и приложил красный конверт, чтобы попросить совета. Я получил ответ быстро после того, как указал, использовалconcat()функция конкатенации.

image

Чтобы все скопировали и узнали, поставьте код:

select
    concat(date_format(created_at,'%Y-'),week(created_at)) as 年周,
    count(user_id) as 用户数
from
     users
group by
    年周
order by
    年周

6. Резюме

Подводя итог, mysql может пройтиdate_format()иconcat(),week()Такие функции могут выполнять ежемесячные и еженедельные статистические требования к ежемесячным и еженедельным отчетам, обычно используемым при анализе данных. Ключевое утверждение:

  • date(column_name) as 年月日
  • date_format(column_name,'%Y-%m') as 年月
  • concat(date_format(column_name,'%Y-'),week(column_name) as 年周

В дополнение к пунктам знаний в этой заметке я также привожу свои собственные идеи по изучению и расширению навыков. Это вдохновило вас? Если есть, не забудьте оставить сообщение или поставить лайк и рассказать мне, и призвать меня поделиться больше.

Специальное заявление: данные в этой заметке являются локальной базой данных, предназначенной только для моего практического использования, а не официальными данными какого-либо веб-сайта продукта.