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

Чтобы получилось 3, надо по какому-то другому столбцу считать.
...
Рейтинг: 0 / 0
12.06.2019, 17:18
    #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
12.06.2019, 17:34
    #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
12.06.2019, 17:43
    #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
12.06.2019, 17:46
    #39825810
petrovichvanya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать количества значений
Спасибо, оба варианта подошли
...
Рейтинг: 0 / 0
12.06.2019, 17:58
    #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
12.06.2019, 18:16
    #39825818
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посчитать количества значений
alex-lsтак 4 правильно 1, 2 и 2 null
тогда я неправильно понял задачу
и 21907369 неверное решение

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

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

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

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


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