After GROUP BY inside FOREACH ... first you can do ORDER BY and then LIMIT . This will sort things in each group first by city size, then pull the top 5.
B = GROUP A BY state; C = FOREACH B { DA = ORDER A BY citysize DESC; DB = LIMIT DA 5; GENERATE FLATTEN(group), FLATTEN(DB.citysize), FLATTEN(DB.cityname); }
source share