私はこのケースを持っています: ユーザーは Web サイトで検索を行っており、一部のユーザーは購入しています。購入条件が true で、検索セッション = 購入セッションで、次の購入なしで検索を行った 18 歳以上のユーザーをどのように選択しますか?
これにより、検索イベントがあり、年齢が 18 歳以上のユーザーが選択されます。
select DISTINCT ON (id) id, email, users.age, events.type, events.createdon
from users
LEFT JOIN events ON events.user = users.users
where events.type='search'
and age>18
and events.condition is true
同じセッションで以前に検索イベントを行ったという条件を追加するにはどうすればよいですか?
イベントのテーブル構造:
-----------------------------------------------------
| user | event | date | condition | session |
------------------------------------------------------|
| 1 | search | 08-10-2013 | true | A |
| 1 | search | 08-10-2013 | true | A |
| 2 | search | 08-10-2013 | false | B |
| 2 | purchase | 09-10-2013 | false | A |
| 2 | search | 09-10-2013 | true | C |
| 1 | purchase | 09-10-2013 | true | A |
| 3 | search | 09-10-2013 | false | D |
| 2 | search | 10-10-2013 | true | H |
| 4 | search | 10-10-2013 | false | E |
| 4 | search | 10-10-2013 | false | E |
| 3 | search | 11-10-2013 | true | D |
| 2 | other | 11-10-2013 | true | H |
| 1 | search | 11-10-2013 | true | F |
| 1 | purchase | 12-10-2013 | true | F |
| 3 | purchase | 12-10-2013 | false | D |
| 4 | search | 12-10-2013 | true | G |
| 2 | other | 12-10-2013 | true | A |
-----------------------------------------------------
ユーザーテーブルは次のとおりです。
------------------------
| user | email | age |
------------------------
| 1 | a | 22 |
| 2 | b | 34 |
| 3 | c | 15 |
| 4 | d | 44 |
| 5 | e | 39 |
------------------------
結果は 2 と 4 になります。
1 a -> NO because did purchase with condition=true
2 b -> YES because did search, did purchase BUT condition=false
3 c -> NO because did search, did purchase with condition=false BUT age<18
4 d -> YES because did search and no purchase
ありがとう、私は Mongo の Postgres を使い始めたばかりで、はるかに優れています!
更新: たとえば、修正された結果