Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Архив новостей


Автор: Sunvas 25.8.2008, 03:03
Есть таблица новостей. В одном из полей типа DATE хранится дата публикации новости в виде YYYY-MM-DD. Как составить запрос, чтобы получить количество новостей за каждый месяц. Т.е. например:
2007-11       5
2007-12       10
2008-01       9

Автор: skyboy 25.8.2008, 07:41
Цитата(Sunvas @  25.8.2008,  02:03 Найти цитируемый пост)
в виде YYYY-MM-DD

т.е. в строковом поле? 

Автор: Akina 25.8.2008, 08:34
Суть:
Код

Group By concatenate(to_string(year(DATE)); "-"; to_string(month(DATE)))

Автор: Sunvas 25.8.2008, 11:52
Akina, пасибо. Суть уловил smile

Автор: skyboy 25.8.2008, 12:19
Akina, а почему не 
Код

GROUP BY year(`DATE`), month(`DATE`)
?
Зачем ещё конкатенация?

Автор: Akina 25.8.2008, 12:27
Цитата(skyboy @  25.8.2008,  13:19 Найти цитируемый пост)
Зачем ещё конкатенация?

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)