ВЫБЕРИТЕ дату, а затем поместите ее в группу

Я пытаюсь выбрать даты из своей БД, а затем сгруппировать их, например, как месяцы и годы:

May 2019
June 2018
etc.

БД -дата типа дата

У меня есть этот код:

  SELECT datum, count(*) FROM zapasy GROUP BY datum

Это делает его каждый день, но я не хочу этого, поэтому я искал, как сделать его групповым по месяцам и годам, а не только по дням.

 SELECT datum, count(*) FROM zapasy GROUP BY MONTH(datum), YEAR(datum)

и я придумал это, однако я получаю эту глупую ошибку

#1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'zapasy_db_test.zapasy.datum' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

И я понятия не имею, что не так с кодом

Пожалуйста, дайте мне совет. Спасибо

Это из-за sql_mode=only_full_group_by; Может быть, вы можете попробовать так SELECT MONTH(datum), YEAR(datum), count(*) FROM zapasy GROUP BY MONTH(datum), YEAR(datum) ?

FanoFN 22.05.2019 10:40

Возможный дубликат MySQL: нет в GROUP BY

Topher 22.05.2019 10:45
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
2
63
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вам нужно иметь элементы, которые вы группируете, в своем выборе.

Так

 SELECT MONTH(datum), YEAR(datum), count(*) from ...  group by MONTH(datum), YEAR(datum)

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

Ответ принят как подходящий

Я заметил, что желаемый результат находится в этом формате May 2019 etc. Вы знаете, что DATE тип данных такой, yyyy-mm-dd поэтому, если вы действительно хотите извлечь месяц-год в этом формате, вы можете попробовать следующее:

SELECT DATE_FORMAT(datum, '%b %Y') AS 'Monthyear', COUNT(*) 
FROM zapasy 
GROUP BY Monthyear;

Другие вопросы по теме