Я только что начал свое приключение с sql, и у меня возникла проблема с получением строки с самым большим целым числом, назначенным ей (в другом столбце). Я просто хочу сказать, что я проверил решения, предоставленные для больших потоков, таких как: SQL выбрать только строки с максимальным значением в столбце , но я просто не смог использовать его в моем случае, поэтому я прошу прощения, если это будет рассматриваться как дубликат вопроса.
Это код, который у меня сейчас есть:
SELECT FinalSet.stageName, MAX(Salary) AS 'Biggest Salary'
FROM (
SELECT FirstSet.stageName, SUM(dailySalary) AS Salary
FROM (
SELECT C.stageName, P.dailySalary
FROM Participant P, Contender C
WHERE P.contender = C.idContender
) FirstSet
GROUP BY stageName
) FinalSet
GROUP BY stageName;
, и вот что у меня получилось:
| stageName | Biggest Salary |
---------------------------------
| DJ Smith | 200 |
| Echo Beavers | 270 |
| Jazzy Beast | 220 |
| Pianoman | 180 |
| Purple bolt | 240 |
| Summer Hoops | 250 |
Когда я удаляю последнюю строку моего кода (GROUP BY stageName;), я получаю это:
| stageName | Biggest Salary |
---------------------------------
| DJ Smith | 270 |
Очевидно, что самая большая зарплата в порядке, но stageName - нет. Я просто хочу добавить, что это должно быть сделано в одном запросе, и я не могу создавать или изменять какие-либо таблицы.
Это таблица претендентов:
CREATE TABLE Contender (
idContender INTEGER UNIQUE NOT NULL AUTO_INCREMENT,
coach INTEGER NOT NULL,
stageName VARCHAR(30) NOT NULL,
type VARCHAR(10) NOT NULL,
PRIMARY KEY (idContender),
FOREIGN KEY (coach)
REFERENCES Coach(idCoach)
);
И это участник стол:
CREATE TABLE Participant (
idParticipant INTEGER UNIQUE NOT NULL AUTO_INCREMENT,
contender INTEGER NOT NULL,
name VARCHAR(20) NOT NULL,
surname VARCHAR(30) NOT NULL,
DoB DATE,
phone VARCHAR(20),
dailySalary INTEGER,
gender VARCHAR(10),
PRIMARY KEY (idParticipant),
FOREIGN KEY (contender)
REFERENCES Contender(idContender)
);