@@ -455,6 +455,44 @@ def test_view_aggregate_weighted_mean(self):
455455 {"__ROW_PATH__" : ["a" ], "y" : (1.0 * 200 + 2 * 100 ) / (1.0 + 2 )},
456456 ]
457457
458+ def test_view_aggregate_weighted_mean_by_expression (self ):
459+ data = [
460+ {"a" : "a" , "x" : 1 , "y" : 200 },
461+ {"a" : "a" , "x" : 2 , "y" : 100 },
462+ {"a" : "a" , "x" : 3 , "y" : None },
463+ ]
464+ tbl = Table (data )
465+ view = tbl .view (
466+ aggregates = {"y" : ("weighted mean" , ["z" ])},
467+ group_by = ["a" ],
468+ columns = ["y" , "z" ],
469+ expressions = {"z" : '"x"' },
470+ )
471+
472+ assert view .to_records () == [
473+ {"__ROW_PATH__" : [], "y" : (1.0 * 200 + 2 * 100 ) / (1.0 + 2 ), "z" : 6 },
474+ {"__ROW_PATH__" : ["a" ], "y" : (1.0 * 200 + 2 * 100 ) / (1.0 + 2 ), "z" : 6 },
475+ ]
476+
477+ def test_view_aggregate_weighted_mean_by_expression_without_column_ref (self ):
478+ data = [
479+ {"a" : "a" , "x" : 1 , "y" : 200 },
480+ {"a" : "a" , "x" : 2 , "y" : 100 },
481+ {"a" : "a" , "x" : 3 , "y" : None },
482+ ]
483+ tbl = Table (data )
484+ view = tbl .view (
485+ aggregates = {"y" : ("weighted mean" , ["z" ])},
486+ group_by = ["a" ],
487+ columns = ["y" ],
488+ expressions = {"z" : '"x" + 1' },
489+ )
490+
491+ assert view .to_records () == [
492+ {"__ROW_PATH__" : [], "y" : (2 * 200 + 3 * 100 ) / (2 + 3 )},
493+ {"__ROW_PATH__" : ["a" ], "y" : (2 * 200 + 3 * 100 ) / (2 + 3 )},
494+ ]
495+
458496 def test_view_aggregate_weighted_mean_with_negative_weights (self ):
459497 data = [
460498 {"a" : "a" , "x" : 1 , "y" : 200 },
0 commit comments