Changes between Version 3 and Version 4 of UseCaseScenarios/scenario3


Ignore:
Timestamp:
09/28/25 20:38:14 (35 hours ago)
Author:
221007
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UseCaseScenarios/scenario3

    v3 v4  
    154154                  FROM criminal) AS DOUBLE PRECISION) AS resolution_ratio
    155155}}}
     156
     1573. Во делот со статистиките се бираат персони кои имаат слични дијагнози, со цел да се има некаква особа за консултирање доколку е потребно или за споредба. Истото тоа се прави со следното квери:
     158
     159{{{
     160with 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
     1824. Исто така постои и квери кое се користи за правење на споредба и подредување за топ 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}}}