@IlyaPrivolnov333

Как посчитать сумму по двум столбцам в таблице, за прошлую неделю от текущей?

Есть таблица в MS SQL, необходимо посчитать сумму значений в одном и в другом столбце, учитывая следующее условие: значения должны подсчитываться за прошлую неделю от текущей недели. Время в таблице указывается в столбце "period". При этом, столбец "period" представляет собой не date формат, а nvarchar и дата записывается там следующим образом: '2022-01' - обозначающее 22 год и 1 неделю в году, '2022-06' - обозначающее 22 год и 6 неделю в году и т.д. Идея следующая, брать максимальное значение по столбцу "period", находить в нём второе по величине значение и по нему уже считать суммы необходимых двух столбцов

SELECT SUM(some_value) AS 'Количество order_cost', SUM(just_value) AS 'Количество доставок', MAX(period)
FROM dbo.Sheet1$
WHERE period = MAX(period - 1)

Примерно такой запрос представляю себе по смыслу
  • Вопрос задан
  • 1653 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Akina
Сетевой и системный админ, SQL-программист.
WITH cte AS (
    SELECT *, DENSE_RANK() OVER (ORDER BY period DESC) drnk
    FROM source_table
)
SELECT period,
       SUM(some_value) AS 'Количество order_cost', 
       SUM(just_value) AS 'Количество доставок', 
FROM cte
WHERE drnk = 2
GROUP BY 1;
Ответ написан
Комментировать
rozhnev
@rozhnev Куратор тега SQL
Fullstack programmer, DBA, медленно, дорого
-- Get previous week
SELECT CONCAT(datepart(YEAR, DATEADD(WEEK, -1, GETDATE())) , '-', datepart(wk, DATEADD(WEEK, -1, GETDATE())));

SELECT 
    SUM(some_value) AS 'Количество order_cost', SUM(just_value) AS 'Количество доставок'
FROM dbo.Sheet1$
WHERE 
    period = CONCAT(datepart(YEAR, DATEADD(WEEK, -1, GETDATE())) , '-', datepart(wk, DATEADD(WEEK, -1, GETDATE())))


Test MS SQL DATEADD
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы