Сумма имеет значение за последние три месяца этого набора данных? - PullRequest
1 голос
/ 26 февраля 2020

У меня есть следующий набор данных, и поле даты на нем является строкой. Как написать запрос для подсчета суммы за последние три месяца, используя этот набор данных:

enter image description here

Ответы [ 3 ]

0 голосов
/ 26 февраля 2020

Вы можете преобразовать строковую дату в формат даты.

select top 3 * from test order by convert(datetime,'01-'+date,6) desc 

Приведенный выше запрос даст вам данные за последние три месяца. Тогда вы можете сделать SUM()

select sum(counts) as total from (
  select top 3 * from test order by convert(datetime,'01-'+dat,6) desc 
)a

ПРОВЕРИТЬ ДЕМО ЗДЕСЬ

0 голосов
/ 26 февраля 2020

Согласно ответу @Phong вы можете получить результат следующим образом:

select sum(t.summary)
from (
 select top 3 sum(counts) summary
 from test
 group by y, m
 order by y desc, m desc
) t

ИЛИ вы можете использовать функцию ROW_NUMBER (), чтобы получить тот же результат:

select sum(t.counts)
from (
 select mon, y, counts, 
    row_number() over(order by y desc, mon desc) RN
 from test
) t
where RN <= 3
0 голосов
/ 26 февраля 2020

Возможно, вы ищете что-то вроде этого

SELECT TOP 3 YEAR, MONTH, SUM(Counts) as Total
FROM your_table
GROUP BY YEAR, MONTH
ORDER BY  YEAR DESC, MONTH DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...