powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Посчитать количества значений
10 сообщений из 10, страница 1 из 1
Посчитать количества значений
    #39825794
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, подскажите как посчитать количества значений count. Схема для расчета такая, если у нас в longid одинаковые значение значит считаем их все как один, если пуста тогда каждая ячейка = 1, в общей сумме по приложенному скриншоту у нас должно получится count = 3
...
Рейтинг: 0 / 0
Посчитать количества значений
    #39825797
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
count(distinct LONGID) = 2.

Чтобы получилось 3, надо по какому-то другому столбцу считать.
...
Рейтинг: 0 / 0
Посчитать количества значений
    #39825800
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrovichvanya,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> with t (logid,id) as (
  2  select null,8000016 from dual union all
  3  select null,8000016 from dual union all
  4  select 131084,8000016 from dual union all
  5  select 131084,8000016 from dual union all
  6  select 131085,8000016 from dual)
  7  select count(distinct decode(logid,null,rownum,0)) cc from t
  8  /

        CC
----------
         3



....
stax
...
Рейтинг: 0 / 0
Посчитать количества значений
    #39825806
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax, уже пришла та же мысль, и еще дополнение: во избежание совпадения rownum и реального значения LONGID, написать -rownum.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
with t as (
       select null longid, 1 cnt from dual union all
       select null longid, 1 cnt from dual union all
       select 1 longid, 1 cnt from dual union all
       select 2 longid, 1 cnt from dual union all
       select 2 longid, 1 cnt from dual
)
select count(distinct(nvl(longid, -rownum))) from t
...
Рейтинг: 0 / 0
Посчитать количества значений
    #39825808
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  1  with t as (
  2         select null longid, 1 cnt from dual union all
  3         select null longid, 1 cnt from dual union all
  4         select 1 longid, 1 cnt from dual union all
  5         select 2 longid, 1 cnt from dual union all
  6         select 2 longid, 1 cnt from dual
  7  )
  8* select count(distinct(nvl(longid, -rownum))) cc from t
SQL> /

        CC
----------
         4



.....
stax
...
Рейтинг: 0 / 0
Посчитать количества значений
    #39825810
petrovichvanya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, оба варианта подошли
...
Рейтинг: 0 / 0
Посчитать количества значений
    #39825814
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxdmdmdm,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  1  with t as (
  2         select null longid, 1 cnt from dual union all
  3         select null longid, 1 cnt from dual union all
  4         select 1 longid, 1 cnt from dual union all
  5         select 2 longid, 1 cnt from dual union all
  6         select 2 longid, 1 cnt from dual
  7  )
  8* select count(distinct(nvl(longid, -rownum))) cc from t
SQL> /

        CC
----------
         4




.....
stax
так 4 правильно 1, 2 и 2 null
...
Рейтинг: 0 / 0
Посчитать количества значений
    #39825818
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex-lsтак 4 правильно 1, 2 и 2 null
тогда я неправильно понял задачу
и 21907369 неверное решение

зы
считал все not null за 1

....
stax
...
Рейтинг: 0 / 0
Посчитать количества значений
    #39825895
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxalex-lsтак 4 правильно 1, 2 и 2 null
тогда я неправильно понял задачу
stax

автор если у нас в longid одинаковые значение значит считаем их все как один, если пуста тогда каждая ячейка = 1
таки написано, что одинаковые значения longid - за единицу, значит разные значения считаем отдельно, ну и по NULL каждая строка как отдельная единица
...
Рейтинг: 0 / 0
Посчитать количества значений
    #39825916
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
count(distinct(nvl(longid, -rownum)))

надежнее и дешевле count null + count distinct.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Посчитать количества значений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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