[CLOSE] ORACLE: Как написать SQL-лину?

0000

Имеется табличка

<GROUP_ID> , <ID>, <IND>

 Надо вывести

<GROUP_ID>, COUNT(<ID>, где IND < 0 COUNT(<ID>, где IND = 0 COUNT(<ID>, где IND > 0)

С группировкой по GROUP_ID разумеется. То есть для каждого GROUP_ID надо найти число ID у которых IND меньше, равен и больше 0.
В тупую вычислить каждую группу по отдельности, а потом все JOIN - не катит (в оригинале IND много значений имеет и исходная таблица большая)

Dasar

допустим так:

select id, Sum( (ind <0)? 1:0 Sum( (ind =0)? 1:0 Sum( (ind >0)? 1:0)
group by id

с точностью до синтаксиса оператора выбора

sinet

ага
select id, Sum(decode(sign(ind-1,1,0 Sum(decode(sign(ind0,1,0 Sum(decode(sign(ind1,1,0
group by id

0000

Хе, это мысль. Сейчас попробую

0000

Спасибо - получилось
Вопрос закрыт
Оставить комментарий
Имя или ник:
Комментарий: