postgresql, filtrowanie

Odpowiedz Nowy wątek
2019-07-19 13:40
0

Cześć,

Jak sprawdzić/wyjać informację dal których jakiś warunek został/nie został chociaż raz spełniony
np. mam tabele z 2 kolumnami
ID obiektu, ID zdarzenia, zdarzenie

1 | 10 | sprzedaz
1 | 11 | wymiana
2 | 12 | sprzedaz

potrzebuje znalezc tylko te obiekty gdzie nigdy nie wystapilo zdarzenie "wymiana"
w tym wypadku id 2

Pozostało 580 znaków

2019-07-19 13:45
1
select 
  distinct t1.id 
from 
  tableka t1 
where 
  not exists (select 1 from tabelka t2 where t2.id=t1.id and t2.zdarzenie='wymiana')

Wybieramy (unikalne) ID, dla których nie istnieje rekord ze zdarzeniem 'wymiana'.

Pozostało 580 znaków

2019-07-19 14:05
1

Można też bez negacji:

select
    id
from
    tabelka
group by
    id
having
     sum(case when zdarzenie = 'wymiana' then 1 else 0 end) = 0

Pozostało 580 znaków

2019-07-19 14:09
0

dzięki

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0