Sql 这里不神秘。在此上下文中,count()用作聚合函数,不允许将聚合函数与选择列表中的单个列或表达式混合使用,除非将该单个列或表达式作为参数传递给另一个聚合函数,或将其包含在group by子句中。它确实返回单个组。但是,您使用的是ANSI之前的样式,在没有

Sql 这里不神秘。在此上下文中,count()用作聚合函数,不允许将聚合函数与选择列表中的单个列或表达式混合使用,除非将该单个列或表达式作为参数传递给另一个聚合函数,或将其包含在group by子句中。它确实返回单个组。但是,您使用的是ANSI之前的样式,在没有,sql,oracle,count,aggregate-functions,Sql,Oracle,Count,Aggregate Functions,这里不神秘。在此上下文中,count()用作聚合函数,不允许将聚合函数与选择列表中的单个列或表达式混合使用,除非将该单个列或表达式作为参数传递给另一个聚合函数,或将其包含在group by子句中。它确实返回单个组。但是,您使用的是ANSI之前的样式,在没有其他条件的情况下连接(因此,使用交叉连接),因此该值连接到test1的每一行。 CREATE TABLE test1 ( num NUMBER ); INSERT INTO test1 VALUES (1); INSERT INTO tes


这里不神秘。在此上下文中,
count()
用作聚合函数,不允许将聚合函数与选择列表中的单个列或表达式混合使用,除非将该单个列或表达式作为参数传递给另一个聚合函数,或将其包含在
group by
子句中。它确实返回单个组。但是,您使用的是ANSI之前的样式
在没有其他条件的情况下连接(因此,使用
交叉连接
),因此该值连接到
test1
的每一行。
CREATE TABLE test1 (
 num NUMBER
);

INSERT INTO test1 VALUES (1);
INSERT INTO test1 VALUES (1);
INSERT INTO test1 VALUES (1);
INSERT INTO test1 VALUES (1);
INSERT INTO test1 VALUES (1);

SELECT COUNT(*) FROM test1;

CREATE TABLE test2 (
 num NUMBER
);

INSERT INTO test2 VALUES (1);
INSERT INTO test2 VALUES (1);
INSERT INTO test2 VALUES (1);
INSERT INTO test2 VALUES (1);
INSERT INTO test2 VALUES (1);

SELECT COUNT(*) FROM test2;

SELECT count(*)/"c2" FROM test1, (SELECT count(*) "c2" FROM test2);

DROP TABLE test1;
DROP TABLE test2;
SELECT count(*)/MAX("c2")
SELECT count(*)/MIN("c2")
SELECT (SELECT count(*) FROM test1) 
       / (SELECT count(*) FROM test2)
FROM dual ;
SELECT "c1" / "c2" 
FROM (SELECT count(*) "c1" FROM test1)
   , (SELECT count(*) "c2" FROM test2) ;
SELECT "c1" / "c2" 
FROM  (SELECT count(*) "c1" FROM test1) x1
    CROSS JOIN
      (SELECT count(*) "c2" FROM test2) x2 ;
SELECT count(*)/c2
FROM test1 cross join
     (SELECT count(*) as c2
      FROM test2
     );