Помогите с запросом

BlindG
Дата: 18.05.2015 18:08:05
Помогите с оптимизацией запроса:

Тестовый данные:
create table test (id integer, NAME varchar(10));

insert into test (id, name) values (1, 'x');
insert into test (id, name) values (1, 'x1');
insert into test (id, name) values (2, 'z');
insert into test (id, name) values (3, 'a');
insert into test (id, name) values (2, 'z1');
insert into test (id, name) values (2, 'z2');


select NAME, < количество колонок с id = 2 > from test where id = 2; 


Результат должен быть:

z 3
z1 3
z2 3

Есть такой вариант:
select NAME, 
(select count(*) from test where id = 2) as count_id
from test where id = 2; 


но не очень оптимальный.
Посоветуйте пож. другие варианты.
Спасибо за вашу помощь!
Alexius
Дата: 18.05.2015 19:43:31
BlindG,

если условие в подзапросе и основном запросе совпадают, то можно просто window функцией count:

select name, count(*) over() as count_id from test where id = 2
BlindG
Дата: 19.05.2015 10:26:59
Alexius, Большое спасибо! то что нужно