sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur får man räkningen av INNER join och räkningen av räkningen av alla föremål?

Om du gör dina två frågor unionskompatibla kan du kombinera resultaten och sammanställa med en ytterligare fråga:

    SELECT payer, 
           sum(churned_accounts) AS "churned_count",
           sum(total_accounts) AS "total_count" 
    FROM (
      SELECT CAST(payor_id AS CHAR(50)) AS "payer", 
             count(*) as "churned accounts", 
             0 AS "total accounts" 
      FROM paid_users_no_more 
      INNER JOIN paid_users 
        ON paid_users_no_more.user_id=paid_users.user_id 
      WHERE paid_users.payment_start_date NOT BETWEEN '2015-08-01 00:00:00'::timestamp AND '2015-08-30 23:59:59'::timestamp 
      AND paid_users_no_more.payment_stop_date BETWEEN '2015-08-01 00:00:00'::timestamp AND '2015-08-30 23:59:59'::timestamp 
      GROUP BY paid_users.payor_id

      UNION

      SELECT CAST(paid_users.payor_email AS CHAR(50)) AS "payer", 
             0 AS "churned accounts", 
             count(*) AS "total accounts" 
      FROM paid_users 
      WHERE paid_users.payment_start_date NOT BETWEEN '2015-08-01 00:00:00'::timestamp AND '2015-08-30 23:59:59'::timestamp 
      GROUP BY paid_users.payor_email
    ) as All_Accounts

Att ha 0 AS "total_accounts" och 0 AS "churned_accounts" betyder att de två frågorna har samma fält närvarande, vilket gör UNION möjligt.




  1. välj de N ÖSTA raderna från en tabell

  2. Hur får man Django att fungera med MySQL-drivrutiner som inte stöds såsom gevent-mysql eller Concurrences MySQL-drivrutin?

  3. Lägger till Inner join och where-klausul för att INSERT INTO ON DUPLICATE KEY UPDATE

  4. Rails aktiv postfråga hämtar de vanligaste objekten