Суммируйте значение столбцов в группе за последний час, а затем суммируйте итоговые значения всех 5 в другом столбце. - PullRequest
0 голосов
/ 12 февраля 2020

(мс sql) То, что я имею ниже, суммирует использование и группы по FurnNbr с текущим месяцем. Я хочу изменить его, чтобы суммировать за последний час и суммировать все 5 в другом столбце

SELECT
        FurnNbr,
        Sum(Usage) as TotalUsage
    FROM
        ChlUsage (nolock)
    WHERE
        DateTm Between
            DATEADD(month, DATEDIFF(month, 0, getDate()), 0)
        and DATEADD(month, DATEDIFF(month, -1, getDate()), -1)
    GROUP BY
        FurnNbr
    ORDER BY
        By FurnNbr asc

Данные должны быть за последний час или сейчас () минус час.

FurnNbr / TotalUsage / TotalUsageOfAll5
1           10                50
2           10
3           10
4           10
5           10

1 Ответ

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

Чтобы выполнить фильтрацию по последнему часу вместо последнего месяца, вы можете просто изменить предложение where. Кроме того, вы можете использовать оконные функции для вычисления общей суммы:

SELECT
    FurnNbr,
    SUM(Usage) as TotalUsage,
    SUM(SUM(Usage)) OVER() TotalUsageOfAll
FROM ChlUsage
WHERE DateTm >= DATEADD(hour, -1, getDate()) AND DateTm < getDate()
GROUP BY FurnNbr
ORDER BY FurnNbr

Если вы хотите показать сумму только в первой строке:

CASE WHEN ROW_NUMBER() OVER(ORDER BY FurnNbr) = 1 
    THEN SUM(SUM(Usage)) OVER() 
END TotalUsageOfAll
...