我正在尝试获取两个计数并将它们划分到 Oracle 11g
中......我尝试了它的两个版本
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: invalid user.table.column, table.column, or column specification 01747. 00000 - "invalid user.table.column, table.column, or column specification"
*Cause:
*Action: Error at Line: 1 Column: 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'
);
在我运行这个之后..我得到以下错误
ORA-00923: FROM keyword not found where expected 00923. 00000 - "FROM keyword not found where expected" *Cause:
*Action: Error at Line: 3 Column: 84
最佳答案
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
是保留字。如果您坚持使用它,那么请始终使用 "(双引号)。
如果您不打算使用任何 ON 子句,请使用 CROSS JOIN
。您还可以使用 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
添加 From dual
它将正常工作。
关于sql - Oracle 11g 得到两个计数并将它们相除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36466013/