Как получить данные sql за определенный месяц

#sql #join #group-by

#sql #Присоединиться #группировка по

Вопрос:

У меня есть таблица student, которая содержит столбцы admission_date и student_status, я хочу получить общее количество поступающих за каждый месяц определенного года, а тип столбца admission_date — DateTime. т.е.

 **Month**      **Total_Admission**
Jan-2016             90
Feb-2016             70
Mar-2016             109
  

Ответ №1:

Попробуйте выполнить следующий запрос.

 SELECT replace(right(convert(varchar, admission_date, 106), 8), ' ', '-') Month,COUNT(*) TotalAdmissions
FROM yourTable
WHERE YEAR(admission_date) = 2016
GROUP BY replace(right(convert(varchar, admission_date, 106), 8), ' ', '-') 
  

Ответ №2:

Вы можете использовать extract(year_month... для получения статистики за месяц. Что-то вроде этого:

 SELECT
    extract(year_month FROM date(admission_date)) month,
    count(*) total_admission
FROM your_table;
  

Ответ №3:

Попробуйте сделать это:

 SELECT COUNT(*) AS admission_total
FROM yourTable
GROUP BY MONTH(admission_date)
  

Ответ №4:

Попробуйте это:

 SELECT LEFT(DATENAME(MONTH,admission_date),3) '-2016' as MonthNumber,COUNT(*) TotalAdmissions
FROM TableName
WHERE YEAR(admission_date) = 2016
GROUP BY LEFT(DATENAME(MONTH,admission_date),3) '-2016'
  

Комментарии:

1. он получает допуски на каждую дату, но я хочу каждый месяц

2. Столбец ‘Student.admission_date’ недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY.

3. да, это я пробовал раньше, но я мог бы получить это как январь-2016

4. @UsfNoor обновил ответ