PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL:Идентифициране на завърнали се посетители въз основа на дата - присъединявания или функции за прозорец?

Първо премахвам event_sequence с DISTINCT (ако приемем, че всички събития са в един и същи ден), тогава използвам функцията на прозореца lead и сравнете с датата на следващото посещение:

SELECT visitor_id,
       session_id,
       COALESCE(
          lead(d_date) OVER w - d_date,
          10
       ) < 7 AS revisited,
       d_date
FROM (SELECT DISTINCT visitor_id,
                      session_id,
                      d_date
      FROM "table"
     ) t
WINDOW w AS (PARTITION BY visitor_id
             ORDER BY d_date
             ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
            )
ORDER BY visitor_id, session_id;

┌────────────┬────────────┬───────────┬────────────┐
│ visitor_id │ session_id │ revisited │   d_date   │
├────────────┼────────────┼───────────┼────────────┤
│          1 │          1 │ t         │ 2017-01-01 │
│          1 │          2 │ f         │ 2017-01-05 │
│          1 │          3 │ t         │ 2017-01-20 │
│          1 │          4 │ f         │ 2017-01-25 │
│          2 │          1 │ t         │ 2017-01-02 │
│          2 │          2 │ f         │ 2017-01-02 │
│          2 │          3 │ f         │ 2017-01-18 │
└────────────┴────────────┴───────────┴────────────┘
(7 rows)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да защитите своята PostgreSQL база данни - 10 съвета

  2. Зареждане на драйвера на postgreSQL JDBC

  3. Намиране на уникални записи, подредени по поле във връзка с PostgreSQL и Rails 3?

  4. Как да изберете схема в postgres, когато използвате psql?

  5. Вземете клеймо за време от свързване на колони за ден и час