Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли создать такой запрос? / 12 сообщений из 12, страница 1 из 1
26.07.2004, 07:07:49
    #32620468
IgorMan2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли создать такой запрос?
Есть таблица, в ней одно поле integer, со значениями 0...50, мне надо с помощью одного запроса выбрать сколько записей со значением ноль и сколько с овсеми остальными значениями

Что то типа, но тут он сгруппирует по значениям, а мне надо по равенству 0 или отличию от него! Сразу скажу union не предлагать

select field1, count(*) CNT from table1
group by field1

TABLE1
FIELD1
-------
10
5
0


QUERY1
FIELD1 CNT
--------------
0 1
1 2
...
Рейтинг: 0 / 0
26.07.2004, 07:13:31
    #32620471
IgorMan2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли создать такой запрос?
Есть конечно вариант:

select field1 / field1, count(*) CNT from table1
group by field1

но он ругается когда field1 = 0
...
Рейтинг: 0 / 0
26.07.2004, 07:46:17
    #32620485
Denis Uskov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли создать такой запрос?
Надо бы версию сервера указывать.
Для FB 1.5 может подойти что=то типа
Код: plaintext
1.
2.
select (case Field1 when  0  then  0  else  1  end) as fld1, count(*) from Table1
group by case Field1 when  0  then  0  else  1  end
------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
26.07.2004, 07:56:10
    #32620489
IgorMan2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли создать такой запрос?
Версия сервера IB5.1
Да просто надо придумать функцию

before -> after
---------------
0 0
1 1
2 1
3 1
4 1
5 1
...
Рейтинг: 0 / 0
26.07.2004, 08:45:57
    #32620525
Denis Uskov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли создать такой запрос?
А чем union не устраивает?
Да и толком объясни что надо(поподробнее).
Код: plaintext
1.
2.
3.
select
  (select count(Field1) from Table1 where Field1 =  0 ),
  (select count(Field1) from Table1 where Field1 <>  0 )
from rdb$database
------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
26.07.2004, 08:51:09
    #32620534
IgorMan2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли создать такой запрос?
Как Вы понимаете запрос уже существует и мне не хочется его менять. Ранешь там хранилось 0 и 1, теперь же 0...50. У меня выбиралось с помощью групировки! Хотельсь бы сохранить структуру запроса.
...
Рейтинг: 0 / 0
26.07.2004, 09:16:33
    #32620566
IgorMan2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли создать такой запрос?
Код: plaintext
1.
2.
3.
select cast(intensiv / (intensiv +  1 ) as numeric( 1 , 0 )) AAA, count(*) from mtl
where 
 repn =  431 
group by intensiv

Но результат опять не тот!!!
Он группирует

AAA , COUNT
----------
0 , 187 <- intensiv = 0
1 , 4 <- intensiv = 1
1 , 1 <- intensiv = 2
1 , 1 <- intensiv = 12

Он их не сгруппировал как мне надо, но все правильно сделал, сгруппировал по intersiv, а как сгруппировать по AAA ? Наверно, это нельзя!
...
Рейтинг: 0 / 0
26.07.2004, 09:20:34
    #32620573
IgorMan2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли создать такой запрос?
Вообще в IB разрешена группировка только по полю? и никак не сгруппировать по функции cast например?
...
Рейтинг: 0 / 0
26.07.2004, 10:32:01
    #32620705
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли создать такой запрос?
IgorMan2Вообще в IB разрешена группировка только по полю? и никак не сгруппировать по функции cast например?
попробуй
Код: plaintext
1.
...
group by  1 
...
Рейтинг: 0 / 0
26.07.2004, 10:46:18
    #32620745
srf2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли создать такой запрос?
в IB5.1 group by 1 работать не будет IMHO....
проще написать процедуру и не париться...
...
Рейтинг: 0 / 0
26.07.2004, 11:00:23
    #32620785
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли создать такой запрос?
Для IB5 несложных понятных вариантов вариантов только два.
Про один уже сказал Denis Uskov. Там, где ... from rdb$database.
Другой
select
0 as AAA, (select count(Field1) from Table1 where Field1 = 0)
union
1, (select count(Field1) from Table1 where Field1 <> 0)
...
Рейтинг: 0 / 0
26.07.2004, 11:39:39
    #32620864
IgorMan2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли создать такой запрос?
Значит нет !!!

Ладно будем делать по другому!!!

Код: plaintext
1.
2.
3.
select 
 0  as AAA, (select count(Field1) from Table1 where Field1 =  0 )
union
 1 , (select count(Field1) from Table1 where Field1 <>  0 )

Понимаешь это тут так просто
Код: plaintext
 select count(Field1) from Table1 where Field1 <>  0 

На самом деле этот кусок очень навороченный с кучей условий, объединений ...

Всем спасибо!
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли создать такой запрос? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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