Подскажите алгоритм запроса на подсчет количества разных объектов по группам в зависимости от кода и вывод во view по полу
У меня есть 4 таблицы, 3 из которых участвует для связи many-to-many, а четвертая с основными двумя сущностями:
Subject, создается всегда
| id | name | addressId | sex | has_object |
|---|---|---|---|---|
| 75675 | Anna | 4 | f | false |
| 75677 | Sam | 7 | m | true |
| 75678 | Toma | 3 | f | true |
Object, который, создается вместе с subject, но не обязательный к заполнению
| id | name | addressId | is_fake |
|---|---|---|---|
| 3434 | House | 3 | false |
| 3435 | Parking | 3 | true |
| 3433 | Shop | 6 | false |
sub_obj, промежуточная для связывания таблиц
| id | sub_id | obj_id |
|---|---|---|
| 1 | 75678 | 3434 |
| 2 | 75677 | 3433 |
| 3 | 75675 | 3435 |
Address, id которого в двух первых
| id | code | city | country | continent |
|---|---|---|---|---|
| 1 | 100 100 100 | Rome | Italy | Europe |
| 2 | 100 130 234 | Venice | Italy | Europe |
| 3 | 100 200 343 | Paris | France | Europe |
| 4 | 100 200 643 | Brest | France | Europe |
| 5 | 100 200 244 | Nice | France | Europe |
| 6 | 200 340 244 | Brasilia | Brazil | South America |
| 7 | 200 250 244 | Rio de janeiro | Brazil | South America |
Предполагается, что в представление будет присылаться код адреса (либо пустое значение для группировки по континентам, либо код континента для отчета по странах, либо код страны для группировки по городам), и в зависимости от него(в разрезе мира, континента, и страны) будет вычиcлятся сумма субъектов и субъектов по названию адреса по полу в по странам Европы
| name_area | Count_male subject_total | Count_male subject_with_object | count_object_by_male | Count_female subject_total | Count_female_subject_with_object | count_object_by_female |
|---|---|---|---|---|---|---|
| Italy | 0 | 0 | 0 | 0 | 0 | 0 |
| France | 0 | 0 | 0 | 2 | 1 | 1 |
По континентам
| name_area | Count_male subject_total | Count_male subject_with_object | count_object_by_male | Count_female subject_total | Count_female_subject_with_object | count_object_by_female |
|---|---|---|---|---|---|---|
| Europe | 0 | 0 | 0 | 2 | 1 | 1 |
| South America | 1 | 1 | 1 | 0 | 0 | 0 |
Как найти и сгруппировать по странам континента, если известно, что первой цифре страны соответствует первая цифра номера континента (x00000000), которая присылается с бэка, и в дальнейшем можно было произвести подсчет количества obj и subj относительно этой страны
в по странам Европы (входной параметр 100000000)
| name_area | Count_male subject_total | Count_male subject_with_object | count_object_by_male | Count_female subject_total | Count_female_subject_with_object | count_object_by_female |
|---|---|---|---|---|---|---|
| Italy | 0 | 0 | 0 | 0 | 0 | 0 |
| France | 0 | 0 | 0 | 2 | 1 | 1 |