MSUM (оконная)

Синтаксис

MSUM( value, rows_1 [ , rows_2 ] )
MSUM( value, rows_1 [ , rows_2 ]      [ TOTAL | WITHIN ... | AMONG ... ]      [ ORDER BY ... ]      [ BEFORE FILTER BY ... ]    )

Подробнее:

Описание

Важно

Сортировка осуществляется на основе полей, перечисленных в области сортировки в чарте и в ORDER BY. При этом сначала берутся поля из ORDER BY.

Возвращает скользящую сумму значений по окну записей, которое определяется порядком сортировки и аргументами:

rows_1rows_2Окно
положительное-Текущая запись и rows_1 предшествующих.
отрицательное-Текущая запись и -rows_1 последующих.
любой знаклюбой знакrows_1 предшествующих записей, текущая и rows_2 последующих.

Аналогичное поведение у оконных функций MCOUNT, MMIN, MMAX, MAVG.

См. также SUM, RSUM.

Типы аргументов:

  • valueДробное число | Целое число
  • rows_1Целое число
  • rows_2Целое число

Возвращаемый тип: Совпадает с типом аргументов (value)

Примечание

Значения аргументов (rows_1, rows_2) должны быть константами.

Примеры

Пример с двумя и тремя аргументами

Исходные данные

DateCityCategoryOrdersProfit
'2019-03-01''London''Office Supplies'8120.80
'2019-03-04''London''Office Supplies'2100.00
'2019-03-05''London''Furniture'1750.00
'2019-03-02''Moscow''Furniture'21250.50
'2019-03-03''Moscow''Office Supplies'485.00
'2019-03-01''San Francisco''Office Supplies'23723.00
'2019-03-01''San Francisco''Furniture'11000.00
'2019-03-03''San Francisco''Furniture'44000.00
'2019-03-02''Detroit''Furniture'53700.00
'2019-03-04''Detroit''Office Supplies'251200.00
'2019-03-04''Detroit''Furniture'23500.00

Группировка по [City].

Сортировка по [City].

Результат

[City]SUM([Orders])MSUM(SUM([Orders]), 1)MSUM(SUM([Orders]), -2)MSUM(SUM([Orders]) 1, 1)
'Detroit'32324943
'London'11434549
'Moscow'6173445
'San Francisco'28342834
Пример с ORDER BY

Исходные данные

DateCityCategoryOrdersProfit
'2019-03-01''London''Office Supplies'8120.80
'2019-03-04''London''Office Supplies'2100.00
'2019-03-05''London''Furniture'1750.00
'2019-03-02''Moscow''Furniture'21250.50
'2019-03-03''Moscow''Office Supplies'485.00
'2019-03-01''San Francisco''Office Supplies'23723.00
'2019-03-01''San Francisco''Furniture'11000.00
'2019-03-03''San Francisco''Furniture'44000.00
'2019-03-02''Detroit''Furniture'53700.00
'2019-03-04''Detroit''Office Supplies'251200.00
'2019-03-04''Detroit''Furniture'23500.00

Группировка по [City].

Сортировка по [City].

Результат

[City]SUM([Orders])MSUM(SUM([Orders]), 1 ORDER BY [City] DESC)MSUM(SUM([Orders]), 1 ORDER BY [Order Sum])
'Detroit'324360
'London'111717
'Moscow'6346
'San Francisco'282839
Пример с группировкой

Исходные данные

DateCityCategoryOrdersProfit
'2019-03-01''London''Office Supplies'8120.80
'2019-03-04''London''Office Supplies'2100.00
'2019-03-05''London''Furniture'1750.00
'2019-03-02''Moscow''Furniture'21250.50
'2019-03-03''Moscow''Office Supplies'485.00
'2019-03-01''San Francisco''Office Supplies'23723.00
'2019-03-01''San Francisco''Furniture'11000.00
'2019-03-03''San Francisco''Furniture'44000.00
'2019-03-02''Detroit''Furniture'53700.00
'2019-03-04''Detroit''Office Supplies'251200.00
'2019-03-04''Detroit''Furniture'23500.00

Группировка по [City], [Category].

Сортировка по [City], [Category].

Результат

[City][Category]SUM([Orders])MSUM(SUM([Orders]), 1 TOTAL ORDER BY [City])MSUM(SUM([Orders]), 1 WITHIN [City] ORDER BY [City])MSUM(SUM([Orders]), 1 AMONG [City] ORDER BY [City])
'Detroit''Furniture'7777
'Detroit''Office Supplies'25323225
'London''Furniture'12618
'London''Office Supplies'10111135
'Moscow''Furniture'21223
'Moscow''Office Supplies'46614
'San Francisco''Furniture'5957
'San Francisco''Office Supplies'23282827

Поддержка источников данных

ClickHouse 21.8, Microsoft SQL Server 2017 (14.0), MySQL 5.7, Oracle Database 12c (12.1), PostgreSQL 9.3.

Previous
Next