I'm trying to join two tables in postgresql with the following structure, which is the relation between some areas and some points surrounding it
Table 1 "d_hid_t"
id_rank | dem_hid_m3s
   1          3.6
   2          3.45
   3          3.40
   4          2.35
   5          2.33
Table 2 "disph"
id_rank |   disph_m3s
   1          0.058
   1          1.36
   1          1833.4
   2          0.017
   2          208.69
   3          0.39
   3          40.79
  ...          ...
I'm expecting to get the join output based on the maximum value found for the unique ID of table 1, without repeating the other related values, for example
Table 3 "output"
id_rank |   disph_m3s
   1          1833.4
   2          208.69
   3           40.69     
  ...          ...
So far I followed some instruction on this stack overflow post Select first record in a One-to-Many relation using left join but with no success. I keep getting the error "aggregate functions are not allowed in JOIN conditions". Right now my code looks like this:
SELECT a.id_rank, a.dem_hid_m3s, a.geom, b.id_disp, b.dist_km, b.disph_m3s
FROM d_hid_t as a
LEFT JOIN disph as b 
ON a.id_rank = b.id_rank
AND (SELECT max(b.disph_m3s) WHERE a.dem_hid_m3s <= b.disph_m3s)
 
    