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

Tính tổng cho nhiều phạm vi ngày trong một truy vấn?

Giả sử tôi hiểu đúng yêu cầu của bạn, tôi nghĩ những gì bạn cần là một cái gì đó dọc theo những dòng sau:

SELECT "periods"."start_date", 
       "periods"."end_date", 
       SUM(CASE WHEN "balance_transactions"."created" BETWEEN "periods"."start_date" AND "periods"."end_date" THEN "balance_transactions"."fee" ELSE 0.00 END) AS period_sum
  FROM "balance_transactions" 
  JOIN charges ON balance_transactions.source = charges.balance_id 
  JOIN ( SELECT '2013-12-20'::date as start_date, '2014-01-19'::date as end_date UNION ALL
         SELECT '2013-12-21'::date as start_date, '2014-01-20'::date as end_date UNION ALL
         SELECT '2013-12-22'::date as start_date, '2014-01-21'::date as end_date UNION ALL
         SELECT '2013-12-23'::date as start_date, '2014-01-22'::date as end_date UNION ALL
         SELECT '2013-12-24'::date as start_date, '2014-01-23'::date as end_date
         ) as periods
    ON "balance_transactions"."created" BETWEEN "periods"."start_date" AND "periods"."end_date"
 WHERE "balance_transactions"."account_id" = 6 
   AND "balance_transactions"."type" = 'charge' 
   AND "charges"."refunded" = false 
   AND "charges"."invoice" IS NOT NULL
 GROUP BY "periods"."start_date", "periods"."end_date"

Điều này sẽ trả lại cho bạn tất cả các khoảng thời gian mà bạn quan tâm trong một tập kết quả. Vì truy vấn được 'tạo' nhanh chóng trong giao diện người dùng của bạn, bạn có thể thêm bao nhiêu hàng vào phần khoảng thời gian tùy thích.

Chỉnh sửa:với một số thử nghiệm và lỗi, tôi đã cố gắng làm cho nó hoạt động [trong sqlFiddle] [1] và cập nhật cú pháp ở trên cho phù hợp.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm việc với Postgres / PostGIS View trong SQLAlchemy

  2. pg_ctl Mẹo và Thủ thuật

  3. PySpark sqlContext đọc Postgres 9.6 NullPointerException

  4. SSL cho kết nối PostgreSQL nodejs

  5. Làm cách nào để đếm số lần xuất hiện cho tất cả các giá trị khác nhau trong cột cơ sở dữ liệu?