**How to reproduce**

CH version: `20.5.2 revision 54435` (latest on `apt` at the moment). Cannot reproduce on `20.4.5`, so it's a regression.

Table:

```sql
create table repro_hits (
    date Date,
    metric Float64
) engine=MergeTree() order by date
```

Query:

```sql
SELECT
    date as period,
    1 as having_check,
    min(date) as period_start,
    addDays(max(date), 1) as period_end,
    dateDiff('second', period_start, period_end) as total_duration,
    sum(metric) as metric_
FROM repro_hits
GROUP BY period
having having_check != -1
```

**Error message and/or stacktrace**
```
Received exception from server (version 20.5.2):
Code: 179. DB::Exception: Received from localhost:9000. DB::Exception: Different expressions with the same alias period_start:
min(date) AS period_start
and
date AS period_start
.
```

The error goes away if I opt out of optimization with `SETTINGS enable_optimize_predicate_expression = 0`.
if (function->arguments->children.size() < 2)
                {
                    ++i;
                    continue;
                }
                const auto * dict_name_ast = function->arguments->children[0]->as<ASTLiteral>();
                const auto * attr_name_ast = function->arguments->children[1]->as<ASTLiteral>();
                if (!dict_name_ast || !attr_name_ast)
                {
                    ++i;
                    continue;
                }
                const auto & dict_name = dict_name_ast->value.safeGet<String>();
                const auto & attr_name = attr_name_ast->value.safeGet<String>();
                String resolved_name = DatabaseCatalog::instance().resolveDictionaryName(dict_name);
                const auto & dict_ptr = context.getExternalDictionariesLoader().getDictionary(resolved_name);
                if (!dict_ptr->isInjective(attr_name))
                {
                    ++i;
                    continue;
                }
            }
            else if (!function_factory.get(function->name, context)->isInjective({}))
            {
                ++i;
                continue;
            }
            
            auto args_ast = function->arguments;
            /** remove function call and take a step back to ensure