ВЫБЕРИТЕ дату и затем поместите ее в группу - PullRequest
0 голосов
/ 22 мая 2019

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

May 2019
June 2018
etc.

DB -дата является типом даты

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

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

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

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

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

# 1055 - Выражение # 1 списка SELECT отсутствует в предложении GROUP BY и содержит неагрегированный столбец 'zapasy_db_test.zapasy.datum', который функционально не зависит от столбцов в предложении GROUP BY; это несовместимо с sql_mode = only_full_group_by

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

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

Ответы [ 2 ]

1 голос
/ 22 мая 2019

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

Таким образом,

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

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

0 голосов
/ 22 мая 2019

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

SELECT DATE_FORMAT(datum, '%b %Y') AS 'Monthyear', COUNT(*) 
FROM zapasy 
GROUP BY Monthyear;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...