|
|
|
Выбрать группы строк с отсутствием значения.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Вот пример простой таблицы f b Иванов а Иванов б Иванов г Петров б Петров д Сидоров а Сидоров д Фамилии в примере уникальны, т.е. на каждого человека есть несколько строк. Выбрать тех у кого есть строка с буквой б во втором столбце - это простой селект. SELECT f FROM table WHERE b='б' А можно ли простым запросом выбрать тех у кого нет какого либо значения, скажем в том же столбце буквы г? Т.е. в данном примере, Иванов в этот список не попадает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2015, 23:08 |
|
||
|
Выбрать группы строк с отсутствием значения.
|
|||
|---|---|---|---|
|
#18+
VladRostДобрый день. Вот пример простой таблицы f b Иванов а Иванов б Иванов г Петров б Петров д Сидоров а Сидоров д Фамилии в примере уникальны, т.е. на каждого человека есть несколько строк. Выбрать тех у кого есть строка с буквой б во втором столбце - это простой селект. SELECT f FROM table WHERE b='б' А можно ли простым запросом выбрать тех у кого нет какого либо значения, скажем в том же столбце буквы г? Т.е. в данном примере, Иванов в этот список не попадает.Значит из всех, кто есть, надо вычесть тех, у кого есть буква "г". Детали на ваше усмотрение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2015, 08:15 |
|
||
|
Выбрать группы строк с отсутствием значения.
|
|||
|---|---|---|---|
|
#18+
То есть делать две выборки и сливать вместе? Я пока решил так - делаю группировку по фамилии, вторую колонку string_agg в одну строку и NOT LIKE, но на мой взгляд слишком сложно получается. одним select-ом не получится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2015, 13:23 |
|
||
|
Выбрать группы строк с отсутствием значения.
|
|||
|---|---|---|---|
|
#18+
VladRost, select f from t group by f having count(1) filter (where b='г') = 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2015, 13:39 |
|
||
|
Выбрать группы строк с отсутствием значения.
|
|||
|---|---|---|---|
|
#18+
VladRost, Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2015, 13:45 |
|
||
|
Выбрать группы строк с отсутствием значения.
|
|||
|---|---|---|---|
|
#18+
p2., Спасибо, работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2015, 09:35 |
|
||
|
Выбрать группы строк с отсутствием значения.
|
|||
|---|---|---|---|
|
#18+
qwwq, Не совсем то. Строки с отсутствием нужного значения есть почти у всех. Т.е. в итоговый список попадают и те кто не должен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2015, 09:36 |
|
||
|
Выбрать группы строк с отсутствием значения.
|
|||
|---|---|---|---|
|
#18+
VladRost, Почитайте про [NOT] EXISTS - подзапросы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2015, 14:00 |
|
||
|
Выбрать группы строк с отсутствием значения.
|
|||
|---|---|---|---|
|
#18+
Щукина АннаVladRost, Почитайте про [NOT] EXISTS - подзапросы +1 разница будет видна на объёмах, при наличии нужных индексов. Правда скорее всего понадобится дополнительный handjob известного вида [ т.к. планер постгреса не умеет быстрый distinct по сильно вырожденному индексированному значению. но это детали] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2015, 15:41 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39030263&tid=1997814]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 263ms |
| total: | 534ms |

| 0 / 0 |
