diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/MedianConvert.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/MedianConvert.java index e6e295ef98c2a8..d8144bf25083f8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/MedianConvert.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/MedianConvert.java @@ -39,7 +39,7 @@ public class MedianConvert implements ExpressionPatternRuleFactory { public List> buildRules() { return ImmutableList.of( matchesType(Median.class).then(median -> - new Percentile(median.child(0), DoubleLiteral.of(0.5)) + new Percentile(median.isDistinct(), median.child(0), DoubleLiteral.of(0.5)) ).toRule(ExpressionRuleType.MEDIAN_CONVERT) ); } diff --git a/regression-test/data/nereids_rules_p0/expression/test_convert_median_to_percentile.out b/regression-test/data/nereids_rules_p0/expression/test_convert_median_to_percentile.out index 3cccc3d6fb086b..43e5deec56b409 100644 --- a/regression-test/data/nereids_rules_p0/expression/test_convert_median_to_percentile.out +++ b/regression-test/data/nereids_rules_p0/expression/test_convert_median_to_percentile.out @@ -19,3 +19,6 @@ -- !select_6 -- 2001 125.5 +-- !median_distinct -- +5.5 1 + diff --git a/regression-test/suites/nereids_rules_p0/expression/test_convert_median_to_percentile.groovy b/regression-test/suites/nereids_rules_p0/expression/test_convert_median_to_percentile.groovy index ea26b5480bd19e..f5357ae4e055b1 100644 --- a/regression-test/suites/nereids_rules_p0/expression/test_convert_median_to_percentile.groovy +++ b/regression-test/suites/nereids_rules_p0/expression/test_convert_median_to_percentile.groovy @@ -74,6 +74,19 @@ suite("test_convert_median_to_percentile") { qt_select_5 "${sql5}" qt_select_6 "${sql6}" + sql "DROP TABLE IF EXISTS median_distinct" + sql """ + CREATE TABLE median_distinct ( + id INT, + value INT + ) + DISTRIBUTED BY HASH(id) BUCKETS 1 + PROPERTIES ("replication_num" = "1") + """ + sql "INSERT INTO median_distinct VALUES (1, 1), (2, 1), (3, 10)" + order_qt_median_distinct "SELECT median(DISTINCT value), median(value) FROM median_distinct" + sql "DROP TABLE IF EXISTS median_distinct" + sql "DROP TABLE if exists sales" sql "DROP DATABASE if exists test_convert_median_to_percentile" }