**Describe what's wrong**

In case of using `optimize_functions_to_subcolumns` ClickHouse doesn't use alias for column name.

**How to reproduce**

ClickHouse 21.13

```
CREATE TABLE test
(
    `key` UInt32,
    `value` Nullable(UInt32)
)
ENGINE = MergeTree
ORDER BY key

INSERT INTO test SELECT
    number,
    NULL
FROM numbers(10000000);


SELECT count(value) AS a
FROM test
SETTINGS optimize_functions_to_subcolumns = 0

┌─a─┐
│ 0 │
└───┘

1 rows in set. Elapsed: 0.028 sec. Processed 32.50 million rows, 162.52 MB (1.15 billion rows/s., 5.74 GB/s.)

SELECT count(value) AS a
FROM test
SETTINGS optimize_functions_to_subcolumns = 1

┌─sum(not(value.null))─┐
│                    0 │
└──────────────────────┘

1 rows in set. Elapsed: 0.032 sec. Processed 32.50 million rows, 32.50 MB (1.00 billion rows/s., 1.00 GB/s.)
```

**Expected behavior**

ClickHouse should use alias name.


{
    auto ast = transformToSubcolumn(name_in_storage, subcolumn_name);
    return makeASTFunction("sum", makeASTFunction("not", ast));
}
ASTPtr transformMapContainsToSubcolumn(const String & name_in_storage, const String & subcolumn_name, const ASTPtr & arg)
{
    auto ast = transformToSubcolumn(name_in_storage, subcolumn_name);
    return makeASTFunction("has", ast, arg);
}
const std::unordered_map<String, std::tuple<TypeIndex, String, decltype(&transformToSubcolumn)>> unary_function_to_subcolumn =
{
    {"length",    {TypeIndex::Array, "size0", transformToSubcolumn}},
    {"empty",     {TypeIndex::Array, "size0", transformEmptyToSubcolumn}},
    {"notEmpty",  {TypeIndex::Array, "size0", transformNotEmptyToSubcolumn}},
    {"isNull",    {TypeIndex::Nullable, "null", transformToSubcolumn}},
    {"isNotNull", {TypeIndex::Nullable, "null", transformIsNotNullToSubcolumn}},
    {"count",     {TypeIndex::Nullable, "null", transformCountNullableToSubcolumn}},
    {"mapKeys",   {TypeIndex::Map, "keys", transformToSubcolumn}},
    {"mapValues", {TypeIndex::Map, "values", transformToSubcolumn}},
};
const std::unordered_map<String, std::tuple<TypeIndex, String, decltype(&transformMapContainsToSubcolumn)>> binary_function_to_subcolumn
{
    {"mapContains", {TypeIndex::Map, "keys", transformMapContainsToSubcolumn}},
};
}
void RewriteFunctionToSubcolumnData::visit(ASTFunction & function, ASTPtr & ast) const