SQL Group By Sub Query

时间:2012-06-11 22:53:52

标签: sql group-by subquery max

我完全不了解子查询完全如何通过外部查询访问它们,所以我需要一些帮助来解决这个问题。这是四个架构。

Movie(title, year, director, budget, earnings)
Actor(stagename, realname, birthyear)
ActedIn(stagename, title, year, pay)
CanWorkWith(stagename, director)

找出在电影中表现最高的演员的姓名。 从我得到的,它要求为每部电影找到收入最高的演员......但是在第二个想法中,括号可能表明它可能是谁已经支付最高,也许一对夫妇有相同的金额。不管怎么说..

我有什么

SELECT A.realname
FROM ActedIn A
WHERE A.stagename IN ( SELECT A1.title, A1.year, MAX(pay)
                       FROM ActedIn A1
                       GROUP BY title, year )

我知道在哪里A.stagename IN是完全错误的,我只是不知道如何将其链接回来。

2 个答案:

答案 0 :(得分:2)

如果我理解的话,这应该足够了:

SELECT A.realname
FROM ActedIn A
WHERE pay = (SELECT MAX(pay) FROM ActedIn B WHERE B.stagename = A.stageman)

答案 1 :(得分:1)

子查询的概念很简单。这只是一个透视问题。编写子查询时,它是第一个被处理的段。由于它在外部查询之前完全处理,因此子查询的输出应该对外部查询有意义。在上面提供的示例中,

SELECT A.realname FROM ActedIn A WHERE A.stagename IN 
( SELECT A1.stagename FROM CanWorkWith A1 ) 

运行此查询时,首先处理CanWorkWIth的stagename并将stagename作为输出。期望A.stagename的外部查询接收此值,然后执行外部查询。

编写子查询的方式没有限制。

我希望你明白这一点。现在您已了解子查询的工作原理,我建议您自己解决问题并在此处询问新的SQL。祝好运。