powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли создать такой запрос?
12 сообщений из 12, страница 1 из 1
Можно ли создать такой запрос?
    #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
Можно ли создать такой запрос?
    #32620471
IgorMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть конечно вариант:

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

но он ругается когда field1 = 0
...
Рейтинг: 0 / 0
Можно ли создать такой запрос?
    #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
Можно ли создать такой запрос?
    #32620489
IgorMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Версия сервера IB5.1
Да просто надо придумать функцию

before -> after
---------------
0 0
1 1
2 1
3 1
4 1
5 1
...
Рейтинг: 0 / 0
Можно ли создать такой запрос?
    #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
Можно ли создать такой запрос?
    #32620534
IgorMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как Вы понимаете запрос уже существует и мне не хочется его менять. Ранешь там хранилось 0 и 1, теперь же 0...50. У меня выбиралось с помощью групировки! Хотельсь бы сохранить структуру запроса.
...
Рейтинг: 0 / 0
Можно ли создать такой запрос?
    #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
Можно ли создать такой запрос?
    #32620573
IgorMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще в IB разрешена группировка только по полю? и никак не сгруппировать по функции cast например?
...
Рейтинг: 0 / 0
Можно ли создать такой запрос?
    #32620705
vis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorMan2Вообще в IB разрешена группировка только по полю? и никак не сгруппировать по функции cast например?
попробуй
Код: plaintext
1.
...
group by  1 
...
Рейтинг: 0 / 0
Можно ли создать такой запрос?
    #32620745
srf2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в IB5.1 group by 1 работать не будет IMHO....
проще написать процедуру и не париться...
...
Рейтинг: 0 / 0
Можно ли создать такой запрос?
    #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
Можно ли создать такой запрос?
    #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
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли создать такой запрос?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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