Function table / Level of detail / Mean team revenue

Mean team revenue, from Tableau to SQL

Averages team totals within each region. Below, 8 sample rows go through the calculation and through the SQL, and both return the same numbers.

Calculated field

AVG({ INCLUDE [Team] : SUM([Revenue]) })

Sample data

RegionTeamCustomerRevenueSeatsDate
NorthCedarAster12042026-01-05
NorthCedarAster8022026-02-05
NorthCedarBirch30062026-01-12
NorthPineClover9032026-02-14
SouthElmDahlia20052026-01-08
SouthElmDahlia10022026-02-08
SouthAshFern7532026-01-20
SouthAshFern2512026-02-20

The same calculation as SQL

WITH teams AS (SELECT Region, Team, SUM(Revenue) total FROM input GROUP BY Region, Team) SELECT Region, AVG(total) FROM teams GROUP BY Region ORDER BY Region

Runs the example above.

Result

Regionresult
North295
South200

Same rows from the calculation and from the SQL in DuckDB.

Where a naive translation goes wrong

  • AVG of invoices differs from the average of whole team totals.

    Naive SQL

    SELECT "Region", AVG(Revenue) AS result FROM input  GROUP BY "Region" ORDER BY "Region"
    Regionresult
    North147.5
    South100

    Matches the calculation

    WITH teams AS (SELECT Region, Team, SUM(Revenue) total FROM input GROUP BY Region, Team) SELECT Region, AVG(total) FROM teams GROUP BY Region ORDER BY Region
    Regionresult
    North295
    South200

Signature

AVG({ INCLUDE [Team] : SUM([Revenue]) })