PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

एसक्यूएल तिथियों की सीमा से अधिक औसत स्कोर का चयन

कुछ इस तरह से created_at . मानकर date type प्रकार का है

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. PostgreSQL में एक स्ट्रिंग को कैसे विभाजित करें

  2. रूबी ऑन रेल्स:ग्रुप बाय क्लॉज में दिखाई देना चाहिए या एक समग्र कार्य में उपयोग किया जाना चाहिए

  3. PostgreSQL नेस्टेड JSON क्वेरी

  4. किसी अन्य उपयोगकर्ता द्वारा एक्सेस किए जा रहे डेटाबेस को छोड़ दें?

  5. GraphQl के साथ graphql-type-json पैकेज का उपयोग कैसे करें