首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从多个表中选择SQL查询帮助

从多个表中选择SQL查询帮助
EN

Stack Overflow用户
提问于 2014-02-22 22:18:42
回答 3查看 57关注 0票数 0

我不知道如何完成这个查询..。

问题是:

“每一个在2010年演过一部电影的人,都要在他们演过的所有电影中找到自己的名字和报酬总额(包括那些不是2010年的)。”

所需表格:(其中标题=电影标题,年份=电影年,薪酬=演员薪酬)

代码语言:javascript
复制
ActedIn (name:varchar, title:varchar, year:int, pay:real)

到目前为止我的问题是:

代码语言:javascript
复制
SELECT A.name, A.pay FROM ActedIn A WHERE A.year = 2010;

这将返回:

代码语言:javascript
复制
+--------+--------+
|  Name  |   Pay  |
+--------+--------+
|  Dino  | 12.22  |
+--------+--------+
|  Miro  | 1238.22|
+--------+--------+

但是,这只会给出这位演员在2010年拍摄的特定电影的收入。

现在我有了我想要查找的演员的名字,我需要它找到他们制作的所有其他电影(无论是在2010年之前还是之后),并为他们拍摄的所有电影加起来。

我知道我需要做另一个表格来找到所有的电影,这两个演员在其中,然后合并的列,我认为。

有什么帮助吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-22 22:39:20

您可以使用一个聚合和having子句来完成这一任务:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2014-02-23 00:27:34

您也可以在子查询中使用exists。

代码语言:javascript
复制
 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
票数 1
EN

Stack Overflow用户

发布于 2014-02-22 22:24:34

代码语言:javascript
复制
select name, sum(pay)
  from actedin
 where name in (select name from actedin where year = 2010)
 group by name
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21961366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档