У меня запрос к AWS Athena, и ядро его прекрасно работает.Код моей компании - AA (поле ACD), а коды наших конкурентов - BB, CC и DD (поле OCD).Так что за каждую отдельную поездку, которую совершает моя компания, я получаю серию подобных поездок от конкурентов.Я получаю таблицу, подобную этой:
main =
AID ATRIPDT ACD ACAR CY1 CY2 OID OTRIPDT OCD BCAR DELMN
0 10/30/2018 AA XX22 LAS LAX 300 10/30/2018 BB ZZ1 21
0 10/30/2018 AA XX22 LAS LAX 544 10/30/2018 CC T09 36
0 10/30/2018 AA XX22 LAS LAX 755 10/30/2018 BB KLQ 57
0 10/30/2018 AA XX22 LAS LAX 912 10/30/2018 DD 75Q 5
1 10/30/2018 AA P700 LAS LAX 390 10/30/2018 BB MNZ 13
1 10/30/2018 AA P700 LAS LAX 603 10/30/2018 BB JJ1 30
Однако последний шаг - сгруппировать по AID и выбрать только одну запись для каждого OCD, которая должна быть минимальным значением.DELMN.
В этом случае я ищу это в результате:
AID ATRIPDT ACD ACAR CY1 CY2 OID OTRIPDT OCD BCAR DELMN
0 10/30/2018 AA XX22 LAS LAX 300 10/30/2018 BB ZZ1 21
0 10/30/2018 AA XX22 LAS LAX 544 10/30/2018 CC T09 36
0 10/30/2018 AA XX22 LAS LAX 912 10/30/2018 DD 75Q 5
1 10/30/2018 AA P700 LAS LAX 390 10/30/2018 BB MNZ 13
Я попытался это
with main as
(
<complex query that returns main table>
)
select * from main
where DELMN = (select min(DELMN) from main as b where b.OCD=main.OCD
, который возвращает в общей сложности три записи, такЯ не настраиваю группировку правильно.Мозг истощен, поэтому не уверен, что еще можно попробовать.