diff --git a/frontend/src/metabase/lib/expressions/resolver.js b/frontend/src/metabase/lib/expressions/resolver.js
index 23eb802c6b28460e5442093f22ae80ca29d8578a..8793240417364920bc6afb3c07a855c3037ce887 100644
--- a/frontend/src/metabase/lib/expressions/resolver.js
+++ b/frontend/src/metabase/lib/expressions/resolver.js
@@ -48,6 +48,9 @@ const isCompatible = (a, b) => {
   if (a === "aggregation" && b === "number") {
     return true;
   }
+  if (a === "number" && b === "aggregation") {
+    return true;
+  }
   return false;
 };
 
diff --git a/frontend/test/metabase/lib/expressions/recursive-parser.unit.spec.js b/frontend/test/metabase/lib/expressions/recursive-parser.unit.spec.js
index e252469790ef76e7a046f2b556f0543001024dcb..6aa6b6fc4375b45cd6486de1840e887cdd7ba164 100644
--- a/frontend/test/metabase/lib/expressions/recursive-parser.unit.spec.js
+++ b/frontend/test/metabase/lib/expressions/recursive-parser.unit.spec.js
@@ -201,6 +201,20 @@ describe("metabase/lib/expressions/recursive-parser", () => {
     expect(aggregation("1+CumulativeCount")).toEqual(["+", 1, ["cum-count"]]);
   });
 
+  it("should handle aggregation with another function", () => {
+    const type = "aggregation";
+    const aggregation = expr => resolve(parse(expr), type, mockResolve);
+
+    const A = ["dimension", "A"];
+    const B = ["dimension", "B"];
+
+    expect(aggregation("floor(Sum(A))")).toEqual(["floor", ["sum", A]]);
+    expect(aggregation("round(Distinct(B)/2)")).toEqual([
+      "round",
+      ["/", ["distinct", B], 2],
+    ]);
+  });
+
   it("should prioritize existing metrics over functions", () => {
     const mockResolve = (kind, name) => {
       if (name === "Count" || "ABC".indexOf(name) >= 0) {