PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để có được số lượt tham gia INNER và số lượng của tất cả các mục?

Nếu bạn làm cho hai truy vấn của mình Tương thích với nhau, thì bạn có thể kết hợp các kết quả và tổng hợp với một truy vấn bổ sung:

    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

0 AS "total_accounts"0 AS "churned_accounts" có nghĩa là hai truy vấn có các trường giống nhau, tạo nên UNION có thể.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pyspark:Xóa ký tự rỗng UTF khỏi khung dữ liệu pyspark

  2. Bộ lọc truy vấn Django sử dụng mảng id lớn trong Postgres DB

  3. pg-promise:sử dụng kết quả của một truy vấn trong truy vấn tiếp theo trong một giao dịch

  4. Chuyển đổi quyền truy cập sang PostgreSQL?

  5. Thiết lập đường hầm SSH với Paramiko để truy cập PostgreSQL