Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

July 7 - July 17 | Round 2 of the Power BI Dataviz World Championships. Don't miss your chance! Learn more

Reply
Anonymous
Not applicable

Power Query - Sum by Category WITHOUT Grouping

Hi,

 

I have a table that has the total population figures for a specific demographic across 5 cities for 2017, 2018 and 2019. I want to work out the percentage of population each city has for each year. Here's an example of the data I'm working with:

 

01.PNG

 

Is there any way to do this where I can create another column with the total across the locations for each year?

 

Thanks,

MarkJames

1 ACCEPTED SOLUTION
Nolock
Resident Rockstar
Resident Rockstar

Hi @Anonymous,

you can group the table and then join it back with the original one.

 

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTI0MgaSRgaG5kqxOjAhU4iQBULI2AAiZAkWcgJzDJA1goSMYUIWcCETA4TGWAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Market = _t, Population = _t, Year = _t]),
    ChangedType = Table.TransformColumnTypes(Source,{{"Market", type text}, {"Population", Int64.Type}, {"Year", Int64.Type}}),

    // group by year and sum population
    Aggs = Table.Group(ChangedType, "Year", {"Total Population per Year", each List.Sum([Population])}),
    // rename Year to AggsYear in the table Aggs
    RenameAggsYear = Table.RenameColumns(Aggs, {{"Year", "AggsYear"}}),

    // join source table with aggregations
    JoinWithAggs = Table.Join(ChangedType, "Year", RenameAggsYear, "AggsYear", JoinKind.Inner),
    // remove column AggsYear
    RemoveAggsYearColumn = Table.RemoveColumns(JoinWithAggs, "AggsYear")
in
    RemoveAggsYearColumn

And the result:

Capture.PNG

Next time, please provide also same sample data that we can import. It simplifies the work. Thank you Smiley Happy

View solution in original post

1 REPLY 1
Nolock
Resident Rockstar
Resident Rockstar

Hi @Anonymous,

you can group the table and then join it back with the original one.

 

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTI0MgaSRgaG5kqxOjAhU4iQBULI2AAiZAkWcgJzDJA1goSMYUIWcCETA4TGWAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Market = _t, Population = _t, Year = _t]),
    ChangedType = Table.TransformColumnTypes(Source,{{"Market", type text}, {"Population", Int64.Type}, {"Year", Int64.Type}}),

    // group by year and sum population
    Aggs = Table.Group(ChangedType, "Year", {"Total Population per Year", each List.Sum([Population])}),
    // rename Year to AggsYear in the table Aggs
    RenameAggsYear = Table.RenameColumns(Aggs, {{"Year", "AggsYear"}}),

    // join source table with aggregations
    JoinWithAggs = Table.Join(ChangedType, "Year", RenameAggsYear, "AggsYear", JoinKind.Inner),
    // remove column AggsYear
    RemoveAggsYearColumn = Table.RemoveColumns(JoinWithAggs, "AggsYear")
in
    RemoveAggsYearColumn

And the result:

Capture.PNG

Next time, please provide also same sample data that we can import. It simplifies the work. Thank you Smiley Happy

Helpful resources

Announcements
FabCon and SQLCon Barcelona 2026

FabCon & SQLCon – Barcelona 2026

Join us in Barcelona for FabCon and SQLCon, the Fabric, Power BI, SQL, and AI community event. Save €200 with code FABCMTY200.

60 days of Data Days Carousel

Data Days 2026

Join Data Days 2026: 60 days of free live/on-demand sessions, challenges, study groups, and certification opportunities.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.