无子查询和的SQL最大值

无子查询和的SQL最大值,sql,postgresql,Sql,Postgresql,我正在尝试执行一个SQL查询,它需要按最大和计算进行分组(在PostgreSQL中) 我在这里找到了一些使用子查询的解决方案,但我需要不使用子查询的解决方案(如果可能的话) 查询: 结果: 结果并不像预期的那样,我想为每个音乐节的标题找到一个音乐家aname,他拥有最大的经纪人总利润 预期结果: 提前感谢。使用上的DISTINCT ON: SELECT DISTINCT ON (f.title) f.title, m.aname, SUM(m.salary * m.perce

我正在尝试执行一个SQL查询,它需要按最大和计算进行分组(在PostgreSQL中)

我在这里找到了一些使用子查询的解决方案,但我需要不使用子查询的解决方案(如果可能的话)

查询:

结果:

结果并不像预期的那样,我想为每个音乐节的标题找到一个音乐家aname,他拥有最大的经纪人总利润

预期结果:


提前感谢。

使用
上的DISTINCT ON

SELECT DISTINCT ON (f.title) f.title, m.aname, 
       SUM(m.salary * m.percentage / 100) AS "agent_total_profit"
FROM "Festival" f INNER JOIN
     "Booked" b
     ON b.title = f.title INNER JOIN
     "Musician" m
    ON m.id = b.id
GROUP BY f.title, m.aname
ORDER BY f.title, "agent_total_profit" DESC;
更传统的SQL方法使用
行数()


在上使用不同的

SELECT DISTINCT ON (f.title) f.title, m.aname, 
       SUM(m.salary * m.percentage / 100) AS "agent_total_profit"
FROM "Festival" f INNER JOIN
     "Booked" b
     ON b.title = f.title INNER JOIN
     "Musician" m
    ON m.id = b.id
GROUP BY f.title, m.aname
ORDER BY f.title, "agent_total_profit" DESC;
更传统的SQL方法使用
行数()


对于您的需求划分依据,请参见示例:为什么没有子查询是需求?对于您的需求划分依据,请参见示例:为什么没有子查询是需求?
SELECT f.*
FROM (SELECT f.title, m.aname, 
             SUM(m.salary * m.percentage / 100) AS "agent_total_profit",
             ROW_NUMBER() OVER (PARTITION BY f.title ORDER BY SUM(m.salary * m.percentage / 100) DESC) as seqnum
      FROM "Festival" f INNER JOIN
           "Booked" b
           ON b.title = f.title INNER JOIN
           "Musician" m
          ON m.id = b.id
      GROUP BY f.title, m.aname
     ) f
WHERE seqnum = 1;
ORDER BY f.title, "agent_total_profit" DESC;