Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с запросом / 3 сообщений из 3, страница 1 из 1
18.05.2015, 18:08
    #38961915
BlindG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Помогите с оптимизацией запроса:

Тестовый данные:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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

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



но не очень оптимальный.
Посоветуйте пож. другие варианты.
Спасибо за вашу помощь!
...
Рейтинг: 0 / 0
18.05.2015, 19:43
    #38961998
Alexius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
BlindG,

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

Код: sql
1.
select name, count(*) over() as count_id from test where id = 2
...
Рейтинг: 0 / 0
19.05.2015, 10:26
    #38962310
BlindG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Alexius, Большое спасибо! то что нужно
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с запросом / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]