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

SQL избира среден резултат за диапазон от дати

Нещо подобно, ако приемем, че created_at е от тип date

select p.name,
       hc.note as current_note,
       av.avg_note
from patients p
   join health_conditions hc on hc.patient_id = p.id
   join (
      select patient_id, 
             avg(note) as avg_note
      from health_conditions hc2
      where created_at between current_date - 30 and current_date - 1
      group by patient_id
    ) avg on t.patient_id = hc.patient_id
where hc.created_at = current_date;

Това е синтаксисът на PostgreSQL. Не съм сигурен дали MySQL поддържа аритметика с дати по същия начин.

Редактиране:

Това трябва да ви даде най-новата бележка за всеки пациент, плюс средната стойност за последните 30 дни:

select p.name,
       hc.created_at as last_note_date
       hc.note as current_note,
       t.avg_note
from patients p
   join health_conditions hc 
     on hc.patient_id = p.id
    and hc.created_at = (select max(created_at) 
                         from health_conditions hc2 
                         where hc2.patient_id = hc.patient_id)
   join (
      select patient_id, 
             avg(note) as avg_note
      from health_conditions hc3
      where created_at between current_date - 30 and current_date - 1
      group by patient_id
    ) t on t.patient_id = hc.patient_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. Postgres за извличане на списъка със стойности, разделени със запетая

  2. Как мога да разделя резултата от заявката в отделни колони?

  3. Как да вмъкна ред в postgreSQL pgAdmin?

  4. Създайте/вмъкнете Json в Postgres със заявки и psycopg2

  5. използвайте try/освен с psycopg2 или със затваряне?