mysql группировка по дням

Группа запросов MySQL по дням / месяцам / годам

возможно ли, что я сделаю простой запрос, чтобы подсчитать, сколько записей у меня есть в определенный период времени, например, год, месяц или день, имея

13 ответов

Примечание (в первую очередь, для потенциальных downvoters). В настоящее время это может оказаться не столь эффективным, как другие предложения. Тем не менее, я оставляю его в качестве альтернативы, которая также может помочь увидеть, насколько быстрее другие решения. (Ибо нельзя отличить быстрое от медленного, пока не увидишь разницу.) Кроме того, с течением времени могут быть внесены изменения в движок MySQL в отношении оптимизации, чтобы сделать это решение в некоторых (возможно, не так далеко) точка в будущем, чтобы стать вполне сопоставимыми по эффективности с большинством других.

Я попытался использовать оператор » где » выше, я думал, что это правильно, так как никто не исправил его, но я был неправ; после некоторых поисков я узнал, что это правильная формула для оператора WHERE, поэтому код становится таким:

извлечение (единица измерения от даты) функция лучше, поскольку используется меньше группировки, и функция возвращает числовое значение.

условие сравнения при группировании будет быстрее, чем функция DATE_FORMAT (которая возвращает строковое значение). Попробуйте использовать функцию / поле, которые возвращают нестроковое значение для условия сравнения SQL (где, имея, заказ по, Группа по).

Если ваш поиск более нескольких лет, и вы все еще хотите группировать ежемесячно, я предлагаю:

Версия № 1:

версия #2 (более эффективный):

Я сравнил эти версии на большой таблице с 1,357,918 строками (InnoDB в), и 2-я версия, похоже, имеет лучшие результаты.

version1 (в среднем выполняется 10): 1.404 секунд
version2 (в среднем выполняется 10): 0.780 секунд

( SQL_NO_CACHE ключ добавлен, чтобы предотвратить MySQL от кэширования запросов.)

Если вы хотите сгруппировать по дате в MySQL, используйте код ниже:

надеюсь, это сэкономит некоторое время для тех, кто собирается найти этот поток.

если вы хотите фильтровать записи за определенный год (например, 2000), оптимизируйте WHERE пункт такой:

результаты были сгенерированы для таблицы, содержащей 300k строк и столбец index on date.

Что касается GROUP BY предложение, я протестировал три варианта против вышеупомянутой таблицы; вот результаты:

последний является победителем.

Если вы хотите получить ежемесячную статистику с подсчетом строк в месяц каждого года, заказанного по последнему месяцу, попробуйте следующее:

полное и простое решение с аналогичным выполнением, но более короткой и гибкой альтернативой в настоящее время активен:

следующий запрос работал для меня в Oracle Database 12c Release 12.1.0.1.0

вы можете сделать это просто Mysql DATE_FORMAT () функция в группе BY. Может потребоваться добавить дополнительный столбец для большей ясности в некоторых случаях, например, когда записи охватывают несколько лет, а затем один и тот же месяц в разные годы.Здесь так много вариантов, которые вы можете настроить. Пожалуйста, прочитайте это для начала. Надеюсь, это будет очень полезно для вас. Вот пример запроса для вашего понимания

Я предпочитаю оптимизировать выбор группы на один год следующим образом:

Источник

Как сделать быструю группировку по дням и по часам в mysql?

mysql группировка по дням. 86e83e68a25447f4ad3a3a75d2ee3fa3. mysql группировка по дням фото. mysql группировка по дням-86e83e68a25447f4ad3a3a75d2ee3fa3. картинка mysql группировка по дням. картинка 86e83e68a25447f4ad3a3a75d2ee3fa3. возможно ли, что я сделаю простой запрос, чтобы подсчитать, сколько записей у меня есть в определенный период времени, например, год, месяц или день, имея

mysql группировка по дням. 9743ac1b7a53a1be53f04d0cc805f5bd. mysql группировка по дням фото. mysql группировка по дням-9743ac1b7a53a1be53f04d0cc805f5bd. картинка mysql группировка по дням. картинка 9743ac1b7a53a1be53f04d0cc805f5bd. возможно ли, что я сделаю простой запрос, чтобы подсчитать, сколько записей у меня есть в определенный период времени, например, год, месяц или день, имея

Верно, просто индексы не помогут — любая операция над полем сразу блокирует использование индекса по нему. Добавлять ещё поля и там хранить данных в часах и днях (денормализация)

Кстати в СУБД побольше калибром есть возможность делать вычисляемые поля и делать по ним индексы, а также можно делать индексы по функции — что вам очень сильно помогло бы.

mysql группировка по дням. w232h232 552a6eb13219dba3e9d89c959c8952d6. mysql группировка по дням фото. mysql группировка по дням-w232h232 552a6eb13219dba3e9d89c959c8952d6. картинка mysql группировка по дням. картинка w232h232 552a6eb13219dba3e9d89c959c8952d6. возможно ли, что я сделаю простой запрос, чтобы подсчитать, сколько записей у меня есть в определенный период времени, например, год, месяц или день, имея

mysql группировка по дням. 7f37acf38e1b261243f21a16c555eed2. mysql группировка по дням фото. mysql группировка по дням-7f37acf38e1b261243f21a16c555eed2. картинка mysql группировка по дням. картинка 7f37acf38e1b261243f21a16c555eed2. возможно ли, что я сделаю простой запрос, чтобы подсчитать, сколько записей у меня есть в определенный период времени, например, год, месяц или день, имея

быстро можно только если сделать хранилище отдельное
дата | кол-во
и инкриментить с общим инсертом. (update order_counter set count=count+1 where date=date_format(date,’и какой типо групперовки вам нужен’), надо проверить что будет делать replace или insert с on dublicate key для самой первой встаки в идеале вместо update replace тогда и запись не надо будет проверять что есть.

либо опишите задачу подробнее, если в выборки еще фильтр какой-то есть,
то решение со счетчиком отдельным не поможет.

mysql группировка по дням. 4e0b27cef42c597fc6d4a6fc742a9cd4. mysql группировка по дням фото. mysql группировка по дням-4e0b27cef42c597fc6d4a6fc742a9cd4. картинка mysql группировка по дням. картинка 4e0b27cef42c597fc6d4a6fc742a9cd4. возможно ли, что я сделаю простой запрос, чтобы подсчитать, сколько записей у меня есть в определенный период времени, например, год, месяц или день, имея

Попробуйте следующий вариант — 1. Это для группировки по дням
SELECT…
FROM…
GROUP BY UNIX_TIMESTAMP( поле с датой и временем ) DIV 24 * 3600

2. Это для группировки по часам
SELECT…
FROM…
GROUP BY UNIX_TIMESTAMP( поле с датой и временем ) DIV 3600

Если все еще будет тормозить (скорее всего так и будет), то эти два поля нужно добавлять к таблице и строить по ним индекс

Источник

Mysql группировка по дням месяца?

как я могу сгруппировать по дням, не имея значения в этот день

id date
1 01-02-16
2 05-02-16

а в результате получить

date count
01 1
02 0
03 0
04 0
05 1

Оценить 1 комментарий

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

mysql группировка по дням. 9bee738c3c98418cb574c133925bd5f4. mysql группировка по дням фото. mysql группировка по дням-9bee738c3c98418cb574c133925bd5f4. картинка mysql группировка по дням. картинка 9bee738c3c98418cb574c133925bd5f4. возможно ли, что я сделаю простой запрос, чтобы подсчитать, сколько записей у меня есть в определенный период времени, например, год, месяц или день, имея

mysql группировка по дням. 41d6d53e47a74e128ec86c5be08c3577. mysql группировка по дням фото. mysql группировка по дням-41d6d53e47a74e128ec86c5be08c3577. картинка mysql группировка по дням. картинка 41d6d53e47a74e128ec86c5be08c3577. возможно ли, что я сделаю простой запрос, чтобы подсчитать, сколько записей у меня есть в определенный период времени, например, год, месяц или день, имея

mysql группировка по дням. 9bee738c3c98418cb574c133925bd5f4. mysql группировка по дням фото. mysql группировка по дням-9bee738c3c98418cb574c133925bd5f4. картинка mysql группировка по дням. картинка 9bee738c3c98418cb574c133925bd5f4. возможно ли, что я сделаю простой запрос, чтобы подсчитать, сколько записей у меня есть в определенный период времени, например, год, месяц или день, имея

mysql группировка по дням. 9bee738c3c98418cb574c133925bd5f4. mysql группировка по дням фото. mysql группировка по дням-9bee738c3c98418cb574c133925bd5f4. картинка mysql группировка по дням. картинка 9bee738c3c98418cb574c133925bd5f4. возможно ли, что я сделаю простой запрос, чтобы подсчитать, сколько записей у меня есть в определенный период времени, например, год, месяц или день, имея

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

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

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

ну не скажите, представим такую задачу есть GPS трекер, где у каждой компании есть свой пул автомобилей.
Так же у нас есть отчет содержащий подневно информацию о суммарном расходе топлива для всех машин компании.
Таблица отчета имеет такую структуру:
— идентификатор
— дата, тип date, вес 3 байта
— сумма, ну допустим возьмем float, вес 4 байта.

Если же мы недостающие даты будем проставлять в оболочке, без использования джойнов:
1. Мы можем доставить недостающие даты приблизительно за 34 итерации
2. В результате простой выборки из БД в оболочку будет доставлено всего 3 записи общим размером 21 байт, а не 217

Источник

Работаем с датами в MySQL

Обновлено: 19 декабря, 2018

Вычитание даты от текущей

Следующий код позволяет вычислить разницу в днях между текущей датой, и датой в поле date_start таблицы tbl_sites

Добавление текущей даты/времени при вставке записи

Для сохранения в таблице времени и даты добавления новой записи, необходимо создать новое поле таблицы в Time, где время будет храниться в Unix формате, либо поле TIMESTAMP, в котором время будет храниться в виде: “2013-09-17 15:00:00”.

Для первого случая (поле Time) для сохранения времени добавления записи используется функция time(). Код в данном случае будет выглядеть таким образом:

Для второго случая (поле TIMESTAMP) используется параметр CURRENT_TIMESTAMP (текущее время). Соответственно код будет таким:

Следует отметить, что при дальнейшей работе с этими полями, для вывода их значений в удобном виде, либо для подсчета разницы с каким либо значением времени, необходимо будет эти значения преобразовывать. Например, для того чтобы перевести значение TIMESTAMP в формат Unix-времени, необходимо воспользоваться процедурой strtotime(). Пример данного преобразования выглядит следующим образом (считаем количество секунд, прошедших с времени добавления записи в БД):

Группировка записей по дням, месяцам

Если необходимо, например, посчитать количество звонков по дням, или месяцам (в случаях когда одна запись – звонок), можно сделать следующим образом:

Считаем количество звонков по дням в период последние 30 дней:

Источник

Mysql группировка по дням

profit
id | user_id | date | profit
1 1 2009-06-01 100.55
2 1 2009-06-03 110.55
3 1 2009-06-04 120.55
4 1 2009-06-07 140.55
.
5 1 2009-06-12 130.55
6 1 2009-06-13 150.55
7 1 2009-06-14 105.55

������� �������!7 ��� 09, 16:33����[7512098] �������� | ���������� �������� ����������

mysql группировка по дням. message. mysql группировка по дням фото. mysql группировка по дням-message. картинка mysql группировка по дням. картинка message. возможно ли, что я сделаю простой запрос, чтобы подсчитать, сколько записей у меня есть в определенный период времени, например, год, месяц или день, имеяRe: ������� ������ � ������������ �� �������. [new]
progi2007
Member

2009-08-08 150.0000
2009-08-07 100.0000
2009-06-18 1127.1973
2009-06-17 761.8159
2009-06-16 1061.7598
2009-06-15 1396.4341
2009-06-14 7452.1342
2009-06-13 629.0677
2009-06-12 466.9909
2009-06-11 1336.4949
2009-06-10 1770.0211
2009-06-07 4202.5746
2009-06-01 10509.7444

2009-06-01 �� 2009-06-05 | 10509.7444
2009-06-05 �� 2009-06-12 | 4202.5746 + 1770.0211 + 1336.4949 + 466.9909

��� ��� �� ���

7 ��� 09, 16:56����[7512260] �������� | ���������� �������� ����������
mysql группировка по дням. message. mysql группировка по дням фото. mysql группировка по дням-message. картинка mysql группировка по дням. картинка message. возможно ли, что я сделаю простой запрос, чтобы подсчитать, сколько записей у меня есть в определенный период времени, например, год, месяц или день, имеяRe: ������� ������ � ������������ �� �������. [new]
tanglir
Member

Group By Week(mytable.date), ���?

7 ��� 09, 17:54����[7512608] �������� | ���������� �������� ����������
mysql группировка по дням. message. mysql группировка по дням фото. mysql группировка по дням-message. картинка mysql группировка по дням. картинка message. возможно ли, что я сделаю простой запрос, чтобы подсчитать, сколько записей у меня есть в определенный период времени, например, год, месяц или день, имеяRe: ������� ������ � ������������ �� �������. [new]
progi2007
Member

������:
���������: 31

tanglir
progi2007,

Group By Week(mytable.date), ���?

DAYOFWEEK(d_date) startInt endInt SUM(profit)
7 2009-08-08 2009-08-09 150.0000
6 2009-08-07 2009-08-09 100.0000
5 2009-06-18 2009-06-21 1063.5653
4 2009-06-17 2009-06-21 761.8159
3 2009-06-16 2009-06-21 1061.7598
2 2009-06-15 2009-06-21 1396.4341
1 2009-06-15 2009-06-21 7452.1342
7 2009-06-13 2009-06-14 629.0677
6 2009-06-12 2009-06-14 466.9909
5 2009-06-11 2009-06-14 1336.4949
4 2009-06-10 2009-06-14 1770.0211
1 2009-06-08 2009-06-14 4202.5746
2 2009-06-01 2009-06-07 10509.7444

DAYOFWEEK(d_date) startInt endInt SUM(profit)
6 2009-08-07 2009-08-09 250.0000
3 2009-06-16 2009-06-21 11735.7093
4 2009-06-10 2009-06-14 8405.1491
2 2009-06-01 2009-06-07 10509.7444

����� � �����, � ���� ���� 4 ������ ��������, �� ������� �� ����� ����� ��� ����.

7 ��� 09, 18:16����[7512715] �������� | ���������� �������� ����������
mysql группировка по дням. message. mysql группировка по дням фото. mysql группировка по дням-message. картинка mysql группировка по дням. картинка message. возможно ли, что я сделаю простой запрос, чтобы подсчитать, сколько записей у меня есть в определенный период времени, например, год, месяц или день, имеяRe: ������� ������ � ������������ �� �������. [new]
tanglir
Member

������:
���������: 31

tanglir
progi2007,

nedelya dbeg dend sumprf
31 2009-08-02 2009-08-08 250.0000
24 2009-06-14 2009-06-20 11799.3413
23 2009-06-07 2009-06-13 8405.1491
22 2009-05-31 2009-06-06 10509.7444

������������ � �� �� dbeg DESC
22 2009-05-31 2009-06-06 10509.7444

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *