2016-01-18 5 views
0

Как можно выбрать наиболее распространенный и наименее распространенный месяц среди всех строк?
Скажем, у меня есть дата столбца с этими значениями:Выбор наиболее распространенного месяца из поля DATETIME

|  date  | 
------------------- 
2016-01-21 01:51:21 
2015-05-21 01:51:21 
2015-04-21 01:51:21 
2014-05-21 01:51:21 
2016-05-21 01:51:21 
2015-04-21 01:51:21 

Так идея заключается в том, чтобы выбрать наиболее распространенный и наименьший общий месяц из этой таблицы. Итак, для первого он будет мая (появляется 3 раза), а второй - январь (появляется только один раз). Можно ли сделать это с помощью простого запроса?
Лучше разделить дату на 3 отдельных столбца (год, месяц и день), так как мне понадобится то же самое в течение года с этой даты.

+0

«Что лучше разделить дату 3 колонок, разделенных» почти наверняка нет - есть много способов анализировать дату, так что не стоит риска того, из собственной синхронизации данных. В большинстве случаев я _might_ добавляю _computed_ столбцы, если это сделает запросы немного чище. –

+1

Какие СУБД вы используете? Oracle, MS SQL Server, MySQL? Многие из поставщиков имеют свои собственные функции даты. –

+0

@TomH Я использую MySQL. –

ответ

2

можно сгруппировать по и сосчитать линии, как это:

SELECT month("date"), count(*) 
    FROM "table" 
GROUP BY month("date"); 
0

Этот скрипт должен дать вам количество каждого месяца.

SELECT DATEPART(mm, date) month 
      ,COUNT(DATEPART(mm, date)) monthCount 
    FROM [YourTable] 

    GROUP BY DATEPART(mm, date) 
+0

На самом деле это приводит к фатальной ошибке, говорящей о том, что функции DATEPART не существует. –

+0

Ah Извините - не заметил, что вы были в MySQL. Это для Microsoft T-SQL. Спасибо, что дали мне знать! –

Смежные вопросы