MSUM (window)

Syntax

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

More info:

Description

Warning

The sorting order is based on the fields listed in the sorting section of the chart and in the ORDER BY clause. First, ORDER BY fields are used, and then they are complemented by the fields from the chart.

Returns the moving sum of values in a fixed-size window defined by the sort order and arguments:

rows_1rows_2Window
positive-The current row and rows_1 preceding rows.
negative-The current row and -rows_1 following rows.
any signany signrows_1 preceding rows, the current row and rows_2 following rows.

Window functions with a similar behavior: MCOUNT, MMIN, MMAX, MAVG.

See also SUM, RSUM.

Argument types:

  • valueFractional number | Integer
  • rows_1Integer
  • rows_2Integer

Return type: Same type as (value)

Note

Only constant values are accepted for the arguments (rows_1, rows_2).

Examples

Example with two and three arguments

Source data

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

Grouped by [City].

Sorted by [City].

Result

[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
Example with ORDER BY

Source data

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

Grouped by [City].

Sorted by [City].

Result

[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
Example with grouping

Source data

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

Grouped by [City], [Category].

Sorted by [City], [Category].

Result

[City][Category]SUM([Orders])MSUM(SUM([Orders]), 1 TOTAL ORDER BY [City], [Category])MSUM(SUM([Orders]), 1 WITHIN [City] ORDER BY [Category])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

Data source support

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

Previous
Next