| | 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 | }}} |