Wiedziałem że jak się doda ograniczenia to zadanie wyjdzie banalne...
Działa z SQLite:
CREATE TABLE Table01 (
x integer,
y integer,
z integer
);
/* Data for table Table01 */
INSERT INTO Table01 (x, y, z) VALUES (2, 2, 2);
INSERT INTO Table01 (x, y, z) VALUES (2, 2, 2);
INSERT INTO Table01 (x, y, z) VALUES (2, 3, 2);
INSERT INTO Table01 (x, y, z) VALUES (1, 3, 2);
INSERT INTO Table01 (x, y, z) VALUES (1, 1, 2);
INSERT INTO Table01 (x, y, z) VALUES (7, 2, 2);
INSERT INTO Table01 (x, y, z) VALUES (1, 3, 2);
INSERT INTO Table01 (x, y, z) VALUES (1, 1, 2);
INSERT INTO Table01 (x, y, z) VALUES (7, 2, 2);
INSERT INTO Table01 (x, y, z) VALUES (0, 3, 12);
INSERT INTO Table01 (x, y, z) VALUES (0, 1, 22);
INSERT INTO Table01 (x, y, z) VALUES (7, 0, 23);
INSERT INTO Table01 (x, y, z) VALUES (7, 12, 21);
select (max(x)-min(x)) * (max(y) - min(y)) as area,
min(x), max(x), min(y), max(y), z
from table01
group by z
order by 1 desc
limit 1