检索具有最大值 mysql 的行
Retrieving the row with the biggest value mysql
我刚刚开始我的 sql 冒险,我在检索分配给它的最大整数的行时遇到了问题(在不同的列中)。我只想说我检查了大线程上提供的解决方案,例如:
SQL select only rows with max value on a column
但我无法在我的案例中使用它,所以如果这将被视为重复问题,我深表歉意。
这是我目前拥有的代码:
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 不行。我只想补充一点,它必须在一个查询中完成,我无法创建或更改任何 tables.
这是竞争者table:
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)
);
这是参与者 table:
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)
);
下面需要吗-
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;
我刚刚开始我的 sql 冒险,我在检索分配给它的最大整数的行时遇到了问题(在不同的列中)。我只想说我检查了大线程上提供的解决方案,例如: SQL select only rows with max value on a column 但我无法在我的案例中使用它,所以如果这将被视为重复问题,我深表歉意。
这是我目前拥有的代码:
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 不行。我只想补充一点,它必须在一个查询中完成,我无法创建或更改任何 tables.
这是竞争者table:
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)
);
这是参与者 table:
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)
);
下面需要吗-
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;