У меня есть таблица с именем sites , в которой есть одна или несколько записей с одинаковым идентификатором site_id.Мне нужно создать новую таблицу по следующим критериям:
1) Если существует более одной записи с одинаковым site_id, я должен проверить значения азимута обеих записей с одинаковым site_id, и еслиРазница меньше 10, тогда получите среднее значение азимута, и для них будет создана отдельная запись в новой таблице.(см. site_id 5 в существующей таблице, которая получает идентификатор 6 в новой таблице)
2) если 2 записи для одного и того же site_id превышают 10 градусов, то каждая получает новый идентификатор в новой таблице.(См. Site_id 4 в существующей таблице, который получает 2 идентификатора 4 и 5 в новой таблице)
3) Все остальные записи, которые имеют отличный site_id, могут быть скопированы как есть, и каждая получает новый идентификатор вновый стол(Все site_ids, кроме 4 и 5 в существующей таблице)
СУЩЕСТВУЮЩАЯ ТАБЛИЦА САЙТЫ :
site_id azimuth longitude latitude
------- ------- --------- ---------
1 10 -10.93 10.22
2 20 5.937 60.43
3 30 -7.942 53.47
4 70 57.94 13.14 ---> A) Difference of more than 10 degrees with entry below
4 10 57.94 13.14 ---> A) Difference of more than 10 degrees with entry above
5 45 -7.92 56.88 --> B) Diff of less than 10 deg with below entry
5 55 -7.92 56.88 --> B) Diff of less than 10 deg with above entry
ОЖИДАЕМЫЙ СТОЛ с дополнительным столбцом идентификатора:
id site_id azimuth longitude latitude
------- ------- ------- --------- ---------
1 1 10 -10.93 10.22
2 2 20 5.937 60.43
3 3 30 -7.942 53.47
4 4 70 57.94 13.14 // A) Since the difference in azimuth between the 2 entries in above table is more than 10 degrees, each entry goes as separate entries in the new table
5 4 10 57.94 13.14 // A) Since the difference in azimuth between the 2 entries in above table is more than 10 degrees, each entry goes as separate entries in the new table
6 5 50 -7.92 56.88 // B) The azimuth was within 10 degrees with the other entry, so the average of 45+55/2=50 is taken as azimuth for site_id 5
Поскольку мне нужно найти среднее значение азимутов на основе критерия разности в 10 градусов, мой агрегат GROUP BY не работает для всех записей.Я новичок в SQL и был бы признателен за любую помощь в этом.