powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выбрать группы строк с отсутствием значения.
10 сообщений из 10, страница 1 из 1
Выбрать группы строк с отсутствием значения.
    #39029080
VladRost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Вот пример простой таблицы
f b
Иванов а
Иванов б
Иванов г
Петров б
Петров д
Сидоров а
Сидоров д

Фамилии в примере уникальны, т.е. на каждого человека есть несколько строк. Выбрать тех у кого есть строка с буквой б во втором столбце - это простой селект.
SELECT f FROM table WHERE b='б'
А можно ли простым запросом выбрать тех у кого нет какого либо значения, скажем в том же столбце буквы г? Т.е. в данном примере, Иванов в этот список не попадает.
...
Рейтинг: 0 / 0
Выбрать группы строк с отсутствием значения.
    #39029161
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladRostДобрый день.

Вот пример простой таблицы
f b
Иванов а
Иванов б
Иванов г
Петров б
Петров д
Сидоров а
Сидоров д

Фамилии в примере уникальны, т.е. на каждого человека есть несколько строк. Выбрать тех у кого есть строка с буквой б во втором столбце - это простой селект.
SELECT f FROM table WHERE b='б'
А можно ли простым запросом выбрать тех у кого нет какого либо значения, скажем в том же столбце буквы г? Т.е. в данном примере, Иванов в этот список не попадает.Значит из всех, кто есть, надо вычесть тех, у кого есть буква "г". Детали на ваше усмотрение.
...
Рейтинг: 0 / 0
Выбрать группы строк с отсутствием значения.
    #39029414
VladRost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть делать две выборки и сливать вместе?

Я пока решил так - делаю группировку по фамилии, вторую колонку string_agg в одну строку и NOT LIKE, но на мой взгляд слишком сложно получается.
одним select-ом не получится?
...
Рейтинг: 0 / 0
Выбрать группы строк с отсутствием значения.
    #39029432
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladRost,

select f
from t
group by f
having count(1) filter (where b='г') = 0
...
Рейтинг: 0 / 0
Выбрать группы строк с отсутствием значения.
    #39029439
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladRost,

Код: sql
1.
WHERE NOT {condition}
...
Рейтинг: 0 / 0
Выбрать группы строк с отсутствием значения.
    #39030193
VladRost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p2.,

Спасибо, работает.
...
Рейтинг: 0 / 0
Выбрать группы строк с отсутствием значения.
    #39030194
VladRost
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

Не совсем то. Строки с отсутствием нужного значения есть почти у всех. Т.е. в итоговый список попадают и те кто не должен.
...
Рейтинг: 0 / 0
Выбрать группы строк с отсутствием значения.
    #39030263
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladRost,

Почитайте про [NOT] EXISTS - подзапросы
...
Рейтинг: 0 / 0
Выбрать группы строк с отсутствием значения.
    #39030298
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина АннаVladRost,

Почитайте про [NOT] EXISTS - подзапросы
+1

разница будет видна на объёмах, при наличии нужных индексов. Правда скорее всего понадобится дополнительный handjob известного вида [ т.к. планер постгреса не умеет быстрый distinct по сильно вырожденному индексированному значению. но это детали]
...
Рейтинг: 0 / 0
Выбрать группы строк с отсутствием значения.
    #39031766
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
7.4. Combining Queries

Код: sql
1.
2.
3.
SELECT DISTINCT f FROM t
EXCEPT
SELECT f FROM t WHERE b = 'г'
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выбрать группы строк с отсутствием значения.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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