我不知道如何完成此查询....
问题是:
“对于2010年参演电影的每个人,请找到他们的名字 在他们所采取行动的所有电影中的总薪酬(即包括 那些不在2010年的人。“
需要的表:(其中title =电影标题,年份=电影年份,Pay =演员付费)
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年之前或之后),并为他们所有的电影添加TOTAL PAY。
我知道我需要制作另一张表来查找这两位演员所做的所有电影,然后合并我认为的列。
任何帮助?
答案 0 :(得分:1)
您可以使用单个聚合和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,则保留结果集的名称。
答案 1 :(得分:1)
您还可以将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
答案 2 :(得分:0)
select name, sum(pay)
from actedin
where name in (select name from actedin where year = 2010)
group by name