【问题标题】:Retrieving the row with the biggest value mysql检索具有最大值mysql的行
【发布时间】:2020-03-23 19:36:24
【问题描述】:

我刚刚开始使用 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 不是。我还想补充一点,它必须在一个查询中完成,我无法创建或更改任何表。

这是竞争者表:

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)
);

【问题讨论】:

  • 您应该发布您的数据模型,以便更轻松地帮助您:您的表、它们的列以及它们之间的逻辑关系。
  • 感谢您的建议。我已经更新了问题。

标签: mysql greatest-n-per-group


【解决方案1】:

下面你需要吗-

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;

【讨论】:

  • 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 2013-02-10
相关资源
最近更新 更多