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

Làm cách nào để sử dụng truy vấn con trong SQLAlchemy để tạo đường trung bình?

Đúng vậy, rõ ràng những gì tôi cần là sử dụng cái gọi là vô hướng chọn . Với việc sử dụng những cái mà tôi nhận được mã python này, mã này thực sự hoạt động như tôi muốn (tạo SQL tương đương với SQL đầu tiên trong câu hỏi của tôi, đó là mục tiêu của tôi):

moving_average_days = # configurable value, defaulting to 5
ndays = # configurable value, defaulting to 90
t1 = Measurements.alias('t1') ######
t2 = Measurements.alias('t2')
query = select([t1.c.time, t1.c.value,
                    select([func.avg(t2.c.value)],
                        t2.c.time.between(t1.c.time - datetime.timedelta(moving_average_days), t1.c.time)).label('moving_average')],
            t1.c.time > (datetime.datetime.utcnow() - datetime.timedelta(ndays))). \
        order_by(t1.c.time)

Điều này tạo ra SQL này:

SELECT t1.time, t1.value,
    (
        SELECT avg(t2.value) AS avg_1
        FROM measurements AS t2 
        WHERE t2.time BETWEEN t1.time - :time_1 AND t1.time
    ) AS moving_average 
FROM measurements AS t1
WHERE t1.time > :time_2 ORDER BY t1.time;



  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 thế nào để sao chép khối lượng docker từ máy này sang máy khác?

  2. Báo cáo xu hướng PostgreSQL 2019:Đám mây riêng và đám mây công cộng, Di chuyển, Kết hợp cơ sở dữ liệu &Lý do hàng đầu được sử dụng

  3. Cách giám sát PostgreSQL đang chạy bên trong Docker Container:Phần thứ hai

  4. Giá trị rỗng không phải là duy nhất

  5. date_trunc khoảng thời gian 5 phút trong PostgreSQL