Tested on QGIS 2.18 and QGIS 3.4
I can suggest using a
"Virtual Layer" through
Layer > Add Layer > Add/Edit Virtual Layer...
Let's assume we have 10 features in
"layer" accordingly, where each feature has a unique
"Name" and mutual
"Group" attributes, see image below.
With the following Query, it is possible to achieve the result
SELECT l.geometry, l.MosaicName, l.Name, MAX(ROUND(st_area(l.geometry), 2)) AS sqm
FROM Layer AS l
GROUP BY l.MosaicName
ORDER BY sqm DESC
Mind the CRS. Alternatively you can apply
ROUND(st_area(st_transform(l.geometry,*SRID*)), 2) if you require area in square feets. Therefore, you have to have an SRID.
The output Virtual Layer will provide features with the biggest area in square meters in each group accordingly.
Answering @Gobinath's comment, you can
Save As... a new shapefile going through a common procedure with Right mouse click over the Virtual Layer.