Извлечение строки с наибольшим значением mysql - PullRequest
0 голосов
/ 23 марта 2020

Я только что начал свое приключение с 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)
);

1 Ответ

0 голосов
/ 23 марта 2020

Вам нужно ниже -

SELECT C.stageName, SUM(P.dailySalary) AS Salary
  FROM Participant P, Contender C
 WHERE P.contender = C.idContender
 GROUP BY stageName
 ORDER BY Salary DESC
 LIMIT 1;
...