#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 обновил ответ