powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выбор строки с наибольшим количеством не нулевых столбцов
9 сообщений из 9, страница 1 из 1
Выбор строки с наибольшим количеством не нулевых столбцов
    #39604437
order_by_not_null
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем.
Нужно выбрать из таблицы строку с наибольшим количеством не нулевых столбцов.
Из примера ниже должна быть выбрана последняя строка.
Пока сделал такой вариант (с ещё одним селектом, который выбирает первую строку).
Есть ли более простой/красивый вариант?

Заранее спасибо.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with sel as 
(select 'a' a, null b, null c, 'd' d, null e
union all
select null a, null b, null c, 'd' d, null e
union all
select 'a' a, 'b' b, null c, 'd' d, null e
union all
select 'a' a, null b, 'c' c, 'd' d, 'e' e)
select *
from   sel  s
order by decode(a,null,0,1) + decode(b,null,0,1) + decode(b,null,0,1) + decode(d,null,0,1) + decode(e,null,0,1) desc
...
Рейтинг: 0 / 0
Выбор строки с наибольшим количеством не нулевых столбцов
    #39604442
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
order_by_not_nullЕсть ли более простой/красивый вариант?

У дурной задачи не должно быть красивых решений.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Выбор строки с наибольшим количеством не нулевых столбцов
    #39604511
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
order_by_not_nullЕсть ли более простой/красивый вариант?
Код: plsql
1.
nvl2
...
Рейтинг: 0 / 0
Выбор строки с наибольшим количеством не нулевых столбцов
    #39605132
__vvp_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicorder_by_not_nullЕсть ли более простой/красивый вариант?
Код: plsql
1.
nvl2



Еще учесть, что таких строк м.б. более одной
...
Рейтинг: 0 / 0
Выбор строки с наибольшим количеством не нулевых столбцов
    #39605281
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__vvp_Elicпропущено...
Код: plsql
1.
nvl2



Еще учесть, что таких строк м.б. более одной

Так тебе надо выбрать строку с максимальным числом пустых полей или отсортировать по количеству пустых полей?
Если первое то можно так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
with sel as 
(select 'a' a, null b, null c, 'd' d, null e
 from dual
union all
select null a, null b, null c, 'd' d, null e
 from dual
union all
select 'a' a, 'b' b, null c, 'd' d, null e
 from dual
union all
select 'a' a, null b, 'c' c, 'd' d, 'e' e
 from dual), 
sel1 as
(select s.* 
  , nvl2(a,0,1) + nvl2(b,0,1) + nvl2(c,0,1) + nvl2(d,0,1) + nvl2(e,0,1) sum_col
  , max (nvl2(a,0,1) + nvl2(b,0,1) + nvl2(c,0,1) + nvl2(d,0,1) + nvl2(e,0,1)) over (partition by 1) max_sum_col
  from   sel  s)
select *  
 from sel1
 where sum_col = max_sum_col
...
Рейтинг: 0 / 0
Выбор строки с наибольшим количеством не нулевых столбцов
    #39605308
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
cardinality(    ku$_vcnt(   a,    b,    c,    d,    e)
multiset except ku$_vcnt(null, null, null, null, null))
...
Рейтинг: 0 / 0
Выбор строки с наибольшим количеством не нулевых столбцов
    #39605721
order_by_not_null
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь за задержку с ответом.

XMLerТак тебе надо выбрать строку с максимальным числом пустых полей или отсортировать по количеству пустых полей?


Мне нужно "выбрать строку с максимальным числом НЕ пустых полей", т.е. самую заполненную.
Если таких строк несколько (например, две строки в которых заполено 4 из 5) то подойдет любая.

Спасибо.
...
Рейтинг: 0 / 0
Выбор строки с наибольшим количеством не нулевых столбцов
    #39605838
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-
Код: plsql
1.
2.
cardinality(    ku$_vcnt(   a,    b,    c,    d,    e)
multiset except ku$_vcnt(null, null, null, null, null))



И огрести кучу неявных преобразований в VARCHAR2 - сомневаюсь в реальной таблице вcе поля строковые.

SY.
...
Рейтинг: 0 / 0
Выбор строки с наибольшим количеством не нулевых столбцов
    #39607183
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
order_by_not_nullИзвиняюсь за задержку с ответом.

XMLerТак тебе надо выбрать строку с максимальным числом пустых полей или отсортировать по количеству пустых полей?


Мне нужно "выбрать строку с максимальным числом НЕ пустых полей", т.е. самую заполненную.
Если таких строк несколько (например, две строки в которых заполено 4 из 5) то подойдет любая.

Спасибо.
тогда к предыдущему добавь
Код: plsql
1.
AND ROWNUM = 1
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Выбор строки с наибольшим количеством не нулевых столбцов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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