| 156 | |
| 157 | 3. Во делот со статистиките се бираат персони кои имаат слични дијагнози, со цел да се има некаква особа за консултирање доколку е потребно или за споредба. Истото тоа се прави со следното квери: |
| 158 | |
| 159 | {{{ |
| 160 | with selected_person_diagnosis as( |
| 161 | select distinct d.diagnosis_id as diagnosis_id, d.short_description as label |
| 162 | from person p |
| 163 | join report r on r.person_id = p.person_id |
| 164 | join medicalreport_diagnosis mrd on mrd.report_id = r.report_id |
| 165 | join diagnosis d on mrd.diagnosis_id = d.diagnosis_id |
| 166 | where p.person_id = :person_id |
| 167 | ) |
| 168 | select cast(p2.person_id as bigint), |
| 169 | p2.name || ' ' || p2.surname as full_name, |
| 170 | cast(count(distinct spd.diagnosis_id) as bigint) as matching_diagnoses_count, |
| 171 | string_agg(distinct spd.label, ', ') as matching_labels |
| 172 | from selected_person_diagnosis spd |
| 173 | join medicalreport_diagnosis mrd2 on mrd2.diagnosis_id = spd.diagnosis_id |
| 174 | join report r2 on r2.report_id = mrd2.report_id |
| 175 | join person p2 on p2.person_id = r2.person_id |
| 176 | where p2.person_id != :person_id |
| 177 | group by p2.person_id, p2.name, p2.surname |
| 178 | having count(distinct spd.diagnosis_id) >=1 |
| 179 | order by matching_diagnoses_count desc; |
| 180 | }}} |
| 181 | |
| 182 | 4. Исто така постои и квери кое се користи за правење на споредба и подредување за топ 3 институции за школување: |
| 183 | |
| 184 | {{{ |
| 185 | WITH top_3_institutions AS ( |
| 186 | SELECT ar.institution_id, COUNT(*) AS total_reports |
| 187 | FROM report r |
| 188 | JOIN academicreport ar ON ar.report_id = r.report_id |
| 189 | WHERE r.created_at >= date_trunc('year', now()) - interval '1 year' |
| 190 | GROUP BY ar.institution_id |
| 191 | ORDER BY COUNT(*) DESC |
| 192 | LIMIT 3 |
| 193 | ) |
| 194 | SELECT i.name, a.total_reports |
| 195 | FROM top_3_institutions a |
| 196 | JOIN institution i ON i.institution_id = a.institution_id |
| 197 | ORDER BY a.total_reports DESC; |
| 198 | }}} |