PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL:तिथि के आधार पर वापसी आगंतुकों की पहचान करना - जुड़ना या विंडो फ़ंक्शन?

सबसे पहले, मैं event_sequence remove को हटाता हूं 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 सी लाइब्रेरी (libpq) का उपयोग करके HSTORE कॉलम तक कैसे पहुंचे?

  2. pgbouncer के माध्यम से क्वेरी का स्रोत खोजें

  3. इसका क्या मतलब है जब एक PostgreSQL प्रक्रिया लेनदेन में निष्क्रिय है?

  4. किसी दिए गए बिंदु से एक निश्चित दायरे में अंक खोजने का सबसे कारगर तरीका

  5. PostgreSQL में विभिन्न कमांड लाइन संकेतों का अर्थ?