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

Преброяване по най-ранната дата, намерена от вътрешно присъединяване?

Можете да използвате следната заявка:

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   

Използвах NOT EXISTS оператор, за да изключите записи, които се отнасят до клиенти, които „плащат за себе си“ (ако това наистина е вашето намерение).

След като получите MIN(created_at) дата за customer_id , тогава можете лесно да броите по дата във външна заявка.

Демо тук




  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?

  2. node-postgres с огромно количество заявки

  3. Конфигуриране на PostgreSQL за наблюдаемост

  4. Postgres:изберете сумата от стойности и след това сумирайте това отново

  5. Добавете индекси, за да ускорите търсенето в близост до Geocoder