SQL лучше всего работает с наборами данных. Мой совет - получить набор самых больших лун с помощью оператора SELECT и функции MAX (), а затем объединить набор результатов со всей таблицей. Затем проверьте, равна ли луна самой большой, чтобы напечатать «да» или «нет».
Вот пример использования MySQL. Я создал таблицу Moons, содержащую столбцы moonPlanetOrbited, bodyName, moonMeanRadius. Следующий SQL выбирает самый большой moonMeanRadius для данного moonPlanetOrbited:
SELECT moonPlantedOrbited, MAX(moonMeanRadius) as maxMoonRadius
FROM Moons
GROUP BY moonPlanetOrbitede
Теперь, когда у нас есть список maxMoonRadius, объедините результирующий набор со всей таблицей и проверьте, равен ли moonMeanRadius maxMoonRadius:
SELECT m1.moonPlanetOrbited, m2.bodyName,
if(m1.moonMeanRadius = m2.maxMoonRadius, 'Yes', 'No') as Largest
FROM Moons m1
JOIN (
SELECT moonPlanetOrbited, MAX(moonMeanRadius) as maxMoonRadius
FROM Moons
GROUP BY moonPlanetOrbited
) m2
ON m1.moonPlanetOrbited = m2.moonPlanetOrbited;
Синтаксис IF взят из MySQL 5.5:
http://dev.mysql.com/doc/refman/5.5/en/control-flow-functions.html#function_if
Протестировано с использованием следующего SQL:
CREATE TABLE Moons(
moonPlanetOrbited VARCHAR(255),
bodyName VARCHAR(255),
moonMeanRadius FLOAT
);
INSERT INTO Moons('a', 'b', 1.01);
INSERT INTO Moons('a', 'c', 1.02);
INSERT INTO Moons('a', 'd', 1.03);
INSERT INTO Moons('a', 'e', 1.04);
+-------------------+----------+---------+
| moonPlanetOrbited | bodyName | Largest |
+-------------------+----------+---------+
| a | b | No |
| a | c | No |
| a | d | No |
| a | e | Yes |
+-------------------+----------+---------+
4 rows in set (0.00 sec)