2017-06-16 6 views
0

は、私は2つのテーブル一覧最高のオープニング週末グロス/予算比で映画の制作会社情報


ProdCos
PRODID PRODNAME ProdAddress ProdCity ST ProdZIP ProdPhone

作品
を持っていますMovID MovTitleジャンルRelDate DirLName DirFNameレート予算OpWkEnd Rtime ProdID

プロダクションを記載する必要があります会社(ProdNamd)の映画(ProdID)の週末総売上高/予算比が最も高い。

は、これまでのところ私が持っている:

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:欠落している表現

答えて

2

エラーがSELECT文でこの表現についてです:

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

選択するテーブルを指定していません。また、sumはアグリゲート関数なので、特定のselectステートメントをグループ化していないので、maxを選択する必要はありません。

ただし、既にテーブルからデータを取得しているため、何も選択する必要はありません。これら2つのフィールドの合計を直接選択することができます。

このクエリを参照してください。私はあなたの選択で1つのRatio列を調整しました:

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 
+0

彼らは最高の生産会社だけを望んでいるので、注文を追加して1を限ると、正確な結果が得られるはずです。 – MarkD

+0

よろしくお願いします。 OPは、使用されているデータベースエンジンを指定していませんでした(エラーに基づいて、Oracleであることを確認しています)ので、どのように制限部分を追加するべきかわかりません。 (例えばTSQLは 'top'を使い、MySQLは' limit'を使い、Oracleは 'rownumber'などを使います。 @nogear、最高の比率で最初のムービーを取得するだけでさらに助けが必要な場合は、DBエンジンを指定してください。私は自分の答えを更新できます。しかし、あなたは単にあなたの選択を注文し制限するというMarkDの助言に従うことができるはずです。 – RToyo

+0

あなたは正しいです、私はOracleを使用しています。 – nogear

1

真っ直ぐ前進するのは、最も高い比率の映画を見つけることです。その後、関連する制作会社を探してください。オラクル12cのように、これは単純です:

select * 
from prodcos 
where prodid in 
(
    select prodid 
    from movies 
    order by opwkend/budget desc 
    fetch first 1 row with ties 
) 

以前のバージョンではあなたの代わりにあなたの映画をランク付けするRANKまたはDENSE_RANKを使用することができます。

SELECT pを:

select * 
from prodcos 
where (prodid, 1) in 
(
    select prodid, rank() over (order by opwkend/budget desc) as rnk 
    from movies 
); 
0

は、私が使用することができました。 ProdName、p.ProdID、m.ProdID、(SUM(m.OpWkEnd)/SUM(m.Budget))AS "比率" ムービーから、 ここで、p.ProdID = m.ProdID およびROWNUM = 1 GROUP BY p.ProdName、p.ProdID、m.ProdID ORDER BY(SUM(m.OpWkEnd)/SUM(m.Budget))DESC;

PRODNAME PR PR比

アトラスエンターテイメント10 10:返さ

。692962893

関連する問題