PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menghitung berdasarkan tanggal paling awal yang ditemukan dari gabungan dalam?

Anda dapat menggunakan kueri berikut:

SELECT CONCAT(EXTRACT(MONTH FROM startedPayingDate), '-', 
              EXTRACT(YEAR FROM startedPayingDate)) AS "Month", 
       COUNT(*) AS "Total AB Paying Customers"
FROM (       
   SELECT customer_id, MIN(created_at) AS startedPayingDate 
   FROM customerusermap AS cm
   WHERE NOT EXISTS (SELECT 1
                     FROM users AS u
                     WHERE cm.user_id = u.id)
   GROUP BY customer_id ) AS t
GROUP BY 1   

Saya menggunakan NOT EXISTS operator untuk mengecualikan catatan yang berhubungan dengan pelanggan 'membayar sendiri' (jika itu benar-benar niat Anda).

Setelah Anda mendapatkan MIN(created_at) tanggal per customer_id , maka Anda dapat dengan mudah menghitung per tanggal dalam kueri luar.

Demo di sini




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan Kursor untuk paging di PostgreSQL

  2. PostgreSQL, seret dan tukar

  3. Menggunakan jsonb (PostgreSQL), bagaimana cara mengambil item dengan nilai tertentu yang disimpan sebagai array?

  4. Memberitahu Pengguna Anda untuk Melakukan Fork Sendiri

  5. Menyimpan data terenkripsi di Postgres