どのようにして値がすべての計算された和である派生テーブルからMAX(値)を持つ行を選択することができますか?

mystictuff:

私は、次のコードを試してみましたが、私はただ、最大値で代わりに1行のすべての名前と合計値との完全なテーブルを取得します:

SELECT stageName, max(total_salary)
FROM (
      SELECT c.*, sum(p.dailySalary) as total_salary        
      from contender as c
      left join participant as p
      on (p.contender = c.idContender)
      group by c.idContender ) b
group by stageName;
output: 
Yellow Jesters  205
TikTok  3073
Teabags 947
Bobbleheads 11840
Reddit  1486

私はちょうど必要があります。ボブルヘッド人形11840

PS:DESCを使用せずに解決策を提案し、制限してください

ビルKarwin:

ここにはORDER BY、LIMIT、ウィンドウ関数、ビュー、またはCTEを使用していない、MySQLの5.xの任意のバージョンで動作するはずソリューションです。

SELECT a.stagename, a.total_salary
FROM (
      SELECT c.*, sum(p.dailySalary) as total_salary        
      from contender as c
      left join participant as p
      on (p.contender = c.idContender)
      group by c.idContender ) AS a
LEFT OUTER JOIN (
      SELECT c.*, sum(p.dailySalary) as total_salary        
      from contender as c
      left join participant as p
      on (p.contender = c.idContender)
      group by c.idContender ) AS b
  ON a.total_salary < b.total_salary
WHERE b.total_salary IS NULL;

MySQLの5.7.27でテスト。

出力:

+-------------+--------------+
| stagename   | total_salary |
+-------------+--------------+
| Bobbleheads |        11840 |
+-------------+--------------+

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=364630&siteId=1