drop table if exists x;
create table x (i UInt64, j UInt64, k UInt64, projection agg (select sum(j), avg(k) group by i), projection norm (select j, k order by i)) engine MergeTree order by tuple();

insert into x values (1, 2, 3);

set allow_experimental_projection_optimization = 1, use_index_for_in_with_subqueries = 0;

select sum(j), avg(k) from x where i in (select number from numbers(4));

select j, k from x where i in (select number from numbers(4));

drop table x;

-- Projection analysis should not break other IN constructs. See https://github.com/ClickHouse/ClickHouse/issues/35336
create table if not exists flows (SrcAS UInt32, Bytes UInt64) engine MergeTree() order by tuple();

insert into table flows values (15169, 83948), (12322, 98989), (60068, 99990), (15169, 89898), (15169, 83948), (15169, 89898), (15169, 83948), (15169, 89898), (15169, 83948), (15169, 89898), (15169, 83948), (15169, 89898);

select if(SrcAS in (select SrcAS from flows group by SrcAS order by sum(Bytes) desc limit 10) , SrcAS, 33) as SrcAS from flows where 2 == 2 order by SrcAS;

drop table flows;
