我不知道如何完成这个查询..。
问题是:
“每一个在2010年演过一部电影的人,都要在他们演过的所有电影中找到自己的名字和报酬总额(包括那些不是2010年的)。”
所需表格:(其中标题=电影标题,年份=电影年,薪酬=演员薪酬)
ActedIn (name:varchar, title:varchar, year:int, pay:real)到目前为止我的问题是:
SELECT A.name, A.pay FROM ActedIn A WHERE A.year = 2010;这将返回:
+--------+--------+
| Name | Pay |
+--------+--------+
| Dino | 12.22 |
+--------+--------+
| Miro | 1238.22|
+--------+--------+但是,这只会给出这位演员在2010年拍摄的特定电影的收入。
现在我有了我想要查找的演员的名字,我需要它找到他们制作的所有其他电影(无论是在2010年之前还是之后),并为他们拍摄的所有电影加起来。
我知道我需要做另一个表格来找到所有的电影,这两个演员在其中,然后合并的列,我认为。
有什么帮助吗?
发布于 2014-02-22 22:39:20
您可以使用一个聚合和having子句来完成这一任务:
select ai.name, sum(ai.pay)
from actedin ai
group by ai.name
having sum(case when ai.year = 2010 then 1 else 0 end) > 0;having子句计算每个“名称”在2010年的电影数量。如果这个数字大于0,则为结果集保留名称。
发布于 2014-02-23 00:27:34
您也可以在子查询中使用exists。
select name, sum(pay)
from actedin a
where exists (select 1 from actedin b where a.name = b.name and year = 2010)
group by name发布于 2014-02-22 22:24:34
select name, sum(pay)
from actedin
where name in (select name from actedin where year = 2010)
group by namehttps://stackoverflow.com/questions/21961366
复制相似问题