2016-04-07 5 views
1

を分割するには...私はそれの2つのバージョンOracle 11gの2つのカウントを取得し、私は2つのカウントを取得し、<code>Oracle 11g</code>でそれらを分割しようとしています彼らに

1を試してみました)

SELECT 
    x.number/y.number 
FROM 
(
    SELECT 
    COUNT(*) as "number" 
    FROM 
    GAME 
    WHERE 
    HOMETEAM='Blackpool' 
    AND FTR='H' 
    OR AWAYTEAM='Blackpool' 
    AND FTR='A' 
) x 
join (
    SELECT COUNT(*) as "number" 
    FROM GAME 
    WHERE HOMETEAM='Blackpool' 
     OR AWAYTEAM='Blackpool' 
)y; 

私は以下のエラーが出ます

ORA-01747:無効なuser.table.column、TABLE.COLUMN、または列 仕様 01747. 00000 - 「無効user.table.column、table.columnまたは列特異品名」

*原因:
処置:行でエラー:1列:10

2)

select 
    (
    SELECT COUNT(*) 
    FROM GAME 
    WHERE HOMETEAM='Blackpool' 
     AND FTR='H' 
     OR AWAYTEAM='Blackpool' 
     AND FTR='A' 
    ) /
    (
    SELECT COUNT(*) 
    FROM GAME 
    WHERE HOMETEAM='Blackpool' 
    OR AWAYTEAM='Blackpool' 
    ); 

私はこの1つ..私は以下のエラーを取得する実行した後

ORA-00923:FROMキーワードが見つかりませんでした。 00923. 00000 - "FROMキーワードが見つかりません" *原因:
処置:行でエラー:3カラム:84

+0

これはMySQLと関連していますか?あなたの質問に関連したタグ – Marged

+0

を削除してください:ORはORよりも優先順位が高いですが、読みやすくするためにはカッコを使います: 'WHERE(HOMETEAM = 'Blackpool' AND FTR = 'H' )OR(AWAYTEAM = 'ブラックプール' AND FTR = 'A')。 –

答えて

3
SELECT x."number"/y."number" 
FROM 
(SELECT COUNT(*) as "number" 
    FROM GAME 
WHERE HOMETEAM='Blackpool' AND FTR='H' OR AWAYTEAM='Blackpool' AND FTR='A') x 
cross join 
(SELECT COUNT(*) as "number" 
    FROM GAME 
    WHERE HOMETEAM='Blackpool' OR AWAYTEAM='Blackpool') y; 

Numberが予約語です。あなたがそれを使用することを主張した場合、常に "(ダブルクォーテーション)を使用します。 使用CROSS JOINあなたはON句いずれかを持ってする予定がないとき。あなたはまた、From dualを追加し、それが正常に動作します。

JOIN ON 1 = 1

select 
(SELECT COUNT(*) 
    FROM GAME 
    WHERE HOMETEAM='Blackpool' AND FTR='H' OR AWAYTEAM='Blackpool' AND FTR='A')  
/
(SELECT COUNT(*) 
FROM GAME 
WHERE HOMETEAM='Blackpool' OR AWAYTEAM='Blackpool') 
from dual 

を使用することができます