Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Оптимизация запроса / 5 сообщений из 5, страница 1 из 1
09.07.2010, 17:03
    #36733158
sutni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
Есть некий (базовый) запрос, который выполнившись возвращает что-то типа
A 0 1
A 3 0
B 0 0
A 1 1
B 0 3
C 0 2

Нужно на основании этих данных построить Sql'ем следующие результаты:
A 3 1 1
B 2 2 1
C 1 1 0
где первый столбец - количество вхождений соотв. элемента, второй - кол-во нулей в первом столбце базового подзапроса, третий - кол-во нулей во втором столбце.

Есть ли возможность сделать это так, чтобы базовый запрос выполнялся всего один раз?
...
Рейтинг: 0 / 0
09.07.2010, 17:15
    #36733186
=Dimon=
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
sutni,

select count(name),sum(case when field1=0 then 1 else 0 end),sum(case when field2=0 then 1 else 0 end)
from (...basequery..) group by name

Так получится?
...
Рейтинг: 0 / 0
09.07.2010, 17:17
    #36733191
sutni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
=Dimon=,

Пр case ничего не знал. Спасибо. Сейчас посмотрю.
...
Рейтинг: 0 / 0
09.07.2010, 17:33
    #36733225
sutni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
=Dimon=,

Вроде оно. Ещё раз большое спасибо!
...
Рейтинг: 0 / 0
09.07.2010, 17:45
    #36733257
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
Вместо case можно использовать decode :
Код: plaintext
sum(decode(field1, 0 , 1 , 0 ))
Ещё есть вариант без явной группировки:
Код: plaintext
1.
2.
3.
4.
select distinct name,
	sum( 1  %foreach(name)),
	sum(decode(field1, 0 , 1 , 0 ) %foreach(name)),
	sum(decode(field2, 0 , 1 , 0 ) %foreach(name))
from (...basequery..)
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Оптимизация запроса / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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