|
22 | 22 | swipes |
23 | 23 | ) |
24 | 24 | ( |
25 | | - -- Retrieve used tasks |
26 | | - -- task_id is not the primary key. project_id-group_id-task_id is |
27 | | - WITH used_tasks as ( |
| 25 | + -- Retrieve used task groups |
| 26 | + WITH used_task_groups as ( |
28 | 27 | SELECT |
29 | | - MS.project_id, MS.group_id, MSR.task_id |
30 | | - FROM mapping_sessions_results MSR |
31 | | - INNER JOIN mapping_sessions MS USING (mapping_session_id) |
32 | | - INNER JOIN tasks T USING (project_id, group_id, task_id) |
| 28 | + MS.project_id, MS.group_id |
| 29 | + FROM mapping_sessions MS |
33 | 30 | WHERE |
34 | 31 | MS.start_time >= %(from_date)s and MS.start_time < %(until_date)s |
35 | | - GROUP BY project_id, group_id, task_id |
| 32 | + GROUP BY project_id, group_id -- To get unique |
36 | 33 | ), |
37 | | - -- Calculated task area. |
38 | | - task_data as ( |
| 34 | + -- Calculated area by task_groups |
| 35 | + task_group_data as ( |
39 | 36 | SELECT |
40 | 37 | project_id, |
41 | 38 | group_id, |
42 | | - task_id, |
43 | | - ST_Area(geom::geography(GEOMETRY,4326)) / 1000000 as area -- sqkm |
44 | | - FROM used_tasks |
45 | | - INNER JOIN tasks T USING (project_id, group_id, task_id) |
| 39 | + SUM( |
| 40 | + ST_Area(geom::geography(GEOMETRY,4326)) / 1000000 |
| 41 | + ) as total_task_group_area -- sqkm |
| 42 | + FROM tasks T |
| 43 | + INNER JOIN used_task_groups UG USING (project_id, group_id) |
| 44 | + GROUP BY project_id, group_id |
46 | 45 | ), |
47 | | - -- Aggregate data by group |
| 46 | + -- Aggregate data by user |
48 | 47 | user_data as ( |
49 | 48 | SELECT |
50 | 49 | MS.project_id, |
51 | 50 | MS.group_id, |
52 | 51 | MS.user_id, |
53 | | - MAX(MS.start_time::date) as timestamp_date, |
54 | | - MIN(MS.start_time) as start_time, |
55 | | - MAX(MS.end_time) as end_time, |
56 | | - COUNT(DISTINCT MSR.task_id) as task_count, |
57 | | - SUM(T.area) as area_swiped |
58 | | - FROM mapping_sessions_results MSR |
59 | | - INNER JOIN mapping_sessions MS USING (mapping_session_id) |
60 | | - INNER JOIN task_data T USING (project_id, group_id, task_id) |
| 52 | + MS.start_time::date as timestamp_date, |
| 53 | + MS.start_time, |
| 54 | + MS.end_time, |
| 55 | + MS.items_count as task_count, |
| 56 | + TG.total_task_group_area as area_swiped |
| 57 | + FROM mapping_sessions MS |
| 58 | + INNER JOIN task_group_data TG USING (project_id, group_id) |
61 | 59 | WHERE |
62 | 60 | MS.start_time >= %(from_date)s and MS.start_time < %(until_date)s |
63 | | - GROUP BY MS.project_id, MS.group_id, MS.user_id |
64 | 61 | ), |
65 | | - -- Aggregate group data |
| 62 | + -- Additional aggregate by timestamp_date |
66 | 63 | user_agg_data as ( |
67 | 64 | SELECT |
68 | 65 | project_id, |
|
105 | 102 | swipes |
106 | 103 | ) |
107 | 104 | ( |
108 | | - -- Retrieve used tasks |
109 | | - WITH used_tasks as ( |
| 105 | + -- Retrieve used task groups |
| 106 | + WITH used_task_groups as ( |
110 | 107 | SELECT |
111 | | - project_id, group_id, task_id |
| 108 | + MS.project_id, MS.group_id |
112 | 109 | From mapping_sessions_user_groups MSUR |
113 | 110 | INNER JOIN mapping_sessions MS USING (mapping_session_id) |
114 | | - INNER JOIN mapping_sessions_results MSR USING (mapping_session_id) |
115 | | - INNER JOIN tasks T USING (project_id, group_id, task_id) |
116 | 111 | WHERE |
117 | 112 | MS.start_time >= %(from_date)s and MS.start_time < %(until_date)s |
118 | | - GROUP BY project_id, group_id, task_id |
| 113 | + GROUP BY project_id, group_id -- To get unique |
119 | 114 | ), |
120 | | - -- Calculated task area. |
121 | | - task_data as ( |
| 115 | + -- Calculated area by task_groups |
| 116 | + task_group_data as ( |
122 | 117 | SELECT |
123 | 118 | project_id, |
124 | 119 | group_id, |
125 | | - task_id, |
126 | | - ST_Area(geom::geography(GEOMETRY,4326)) / 1000000 as area -- sqkm |
127 | | - FROM used_tasks |
128 | | - INNER JOIN tasks T USING (project_id, group_id, task_id) |
| 120 | + SUM( |
| 121 | + ST_Area(geom::geography(GEOMETRY,4326)) / 1000000 |
| 122 | + ) as total_task_group_area -- sqkm |
| 123 | + FROM tasks T |
| 124 | + INNER JOIN used_task_groups UG USING (project_id, group_id) |
| 125 | + GROUP BY project_id, group_id |
129 | 126 | ), |
130 | | - -- Aggregate data by group |
| 127 | + -- Aggregate data by user-group |
131 | 128 | user_group_data as ( |
132 | 129 | SELECT |
133 | 130 | MS.project_id, |
134 | 131 | MS.group_id, |
135 | 132 | MS.user_id, |
136 | 133 | MSUR.user_group_id, |
137 | | - MAX(MS.start_time::date) as timestamp_date, |
138 | | - MIN(MS.start_time) as start_time, |
139 | | - MAX(MS.end_time) as end_time, |
140 | | - COUNT(DISTINCT T.task_id) as task_count, |
141 | | - SUM(T.area) as area_swiped |
| 134 | + MS.start_time::date as timestamp_date, |
| 135 | + MS.start_time as start_time, |
| 136 | + MS.end_time as end_time, |
| 137 | + MS.items_count as task_count, |
| 138 | + TG.total_task_group_area as area_swiped |
142 | 139 | From mapping_sessions_user_groups MSUR |
143 | 140 | INNER JOIN mapping_sessions MS USING (mapping_session_id) |
144 | | - INNER JOIN mapping_sessions_results MSR USING (mapping_session_id) |
145 | | - INNER JOIN task_data T USING (task_id) |
| 141 | + INNER JOIN task_group_data TG USING (project_id, group_id) |
146 | 142 | WHERE |
147 | 143 | MS.start_time >= %(from_date)s and MS.start_time < %(until_date)s |
148 | | - GROUP BY MS.project_id, MS.group_id, MS.user_id, MSUR.user_group_id |
149 | 144 | ), |
150 | | - -- Aggregate group data |
| 145 | + -- Additional aggregate by timestamp_date |
151 | 146 | user_group_agg_data as ( |
152 | 147 | SELECT |
153 | 148 | project_id, |
|
0 commit comments