2014-02-20 3 views
1

Я хочу сгруппировать данные по неделям и месяцам. Скажем, я хочу, чтобы найти (сумма объема всех восресеньям в Januray) + (сумма объемов всех восресеньям в феврале) + ... Что я сделал, какГруппа по неделям и месяцу

select CONVERT(VARCHAR(10),date,111), 
     DATENAME(weekday,date) as Weekday, 
     DATEPART(month,date) as Month, 
     DATEPART(year,date) as year, 
     sum(volume) 
    from traffic_data_replica 
group by CONVERT(VARCHAR(10),date,111), 
     DATENAME(weekday,date), 
     DATEPART(month,date), 
     DATEPART(year,date) 
order by DATEPART(year,date), 
     CONVERT(VARCHAR(10),date,111), 
     DATEPART(month,date), 
     DATENAME(weekday,date) ; 

Но это не желаемый результат я хочу :(

ответ

3

Вы включая фактическую дату в группе по формуле (в CONVERT(VARCHAR(10),date,111)), поэтому день уровень агрегации Попробуйте что-то вроде этого:.

SELECT Year(date), 
     Month(date), 
     Datename(weekday, date) AS Weekday, 
     Sum(volume) 
FROM traffic_data_replica 
GROUP BY Year(date), 
      Month(date), 
      Datename(weekday, date) 
ORDER BY Year(date), 
      Month(date), 
      Datename(weekday, date); 

Вы можете использовать datepart() вместо year() и month(). найти последние легче читать и печатать.

+0

Нет, что мне нужно, это сумма объемов для всех воскресений в месяц. Januray .. затем воскресенье в феврале и т. Д. ... то, что вы указали выше, - это тот же результат, который я получил ... – bibinmatthew

+0

@bibinmatthew. , , Этот запрос должен возвращать одну строку в день недели в месяц вместе с суммой томов. Ваш запрос возвращает одну строку в день с томами, суммированными в течение дня. Запросы не должны возвращать одни и те же вещи. Если вы настроили пример SQL Fiddle, мы можем сравнить результирующие множества из двух запросов. –

+0

Хорошо объяснил :) Спасибо bro @gordon – bibinmatthew

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

  • Нет связанных вопросов^_^