首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列出首映周末总/Budget比率最高的电影的制作公司信息

列出首映周末总/Budget比率最高的电影的制作公司信息
EN

Stack Overflow用户
提问于 2017-06-16 15:35:41
回答 3查看 84关注 0票数 0

我有两张桌子

ProdCos

ProdID ProdName ProdAddress ProdCity ST ProdZIP ProdPhone

电影

MovID MovTitle体裁RelDate DirLName DirFName Rtime ProdID

我需要列出制作公司(ProdNamd)的电影(ProdID)的最高开幕周末毛/预算比率。

到目前为止,我已经:

代码语言:javascript
复制
    SELECT p.ProdName, p.ProdID, m.ProdID, MAX(SELECT SUM(m.OpWkEnd / m.Budget) AS "Ratio" )
    FROM Movies m, ProdCos p
    WHERE p.ProdID = m.ProdID
    GROUP BY p.Prodname, m.ProdID, p.ProdID; 

它返回:

ORA-00936:缺少表达式

EN

回答 3

Stack Overflow用户

发布于 2017-06-16 15:47:24

此错误与select语句中的表达式有关:

MAX(SELECT SUM(m.OpWkEnd / m.Budget) AS "Ratio" )

您没有指定要从哪个表中进行选择;而且,sum是一个agrigate函数,因此您不需要选择它的max,因为您没有对特定的SELECT语句进行分组。

但是,您甚至不需要选择任何内容,因为您已经在从表中提取数据。您可以直接选择这两个字段的和。

请参阅此查询;我只调整了所选内容中的一个比率列:

代码语言:javascript
复制
SELECT 
    p.ProdName, p.ProdID, m.ProdID, 
    (SUM(m.OpWkEnd) / SUM(m.Budget)) AS "Ratio"
FROM 
    Movies m, ProdCos p 
WHERE
    p.ProdID = m.ProdID 
GROUP BY 
    p.Prodname, m.ProdID, p.ProdID
票数 2
EN

Stack Overflow用户

发布于 2017-06-16 20:30:11

直截了当的方法是:找到比例最高的电影。然后找到相关的生产公司/公司。对于Oracle 12c,这只是简单的:

代码语言:javascript
复制
select *
from prodcos
where prodid in
(
  select prodid
  from movies
  order by opwkend / budget desc
  fetch first 1 row with ties
)

在早期版本中,您可以使用RANKDENSE_RANK对您的电影进行排序:

代码语言:javascript
复制
select *
from prodcos
where (prodid, 1) in
(
  select prodid, rank() over (order by opwkend / budget desc) as rnk
  from movies
);
票数 1
EN

Stack Overflow用户

发布于 2017-06-20 12:53:07

我可以用:

选择p.ProdName,p.ProdID,m.ProdID,(SUM(m.OpWkEnd) /SUM(m.Budget))作为“比率”,从电影m,ProdCos p中选择p.ProdID = m.ProdID,ROWNUM=1组按p.ProdName,p.ProdID,m.ProdID ORDER BY (SUM(m.OpWkEnd) /SUM(m.Budget)) DESC;

返回:

PR比率

阿特拉斯娱乐10 10 .692962893

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44593076

复制
相关文章

相似问题

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