PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

SQL memilih skor rata-rata selama rentang tanggal

Sesuatu seperti ini dengan asumsi created_at bertipe 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;

Ini adalah sintaks PostgreSQL. Saya tidak yakin apakah MySQL mendukung aritmatika tanggal dengan cara yang sama.

Sunting:

Ini akan memberi Anda catatan terbaru untuk setiap pasien, ditambah rata-rata selama 30 hari terakhir:

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. bagaimana cara mengelompokkan berdasarkan jam di postgresql dengan bidang waktu?

  2. PostgreSQL - Mendapatkan data statistik

  3. Saya memerlukan fungsi untuk memilih 88 baris acak dari tabel (tanpa duplikat)

  4. Ikuti database eksternal dari Heroku

  5. Fungsi lower() pada karakter internasional di postgresql