即使您对连接谓词有限制,Vertica 也支持相关子查询和非相关子查询。
因此,您在上面的查询只是工作。并且 - 猜猜看 - 即使使用缩进,它也会继续工作:
SQL> SELECT
type
, cnt/(select count (*) FROM product) AS perc
FROM
(SELECT type, count (*) as cnt
FROM product
GROUP BY type
) nested ;
type | perc
------+----------------------
C | 0.166666666666666667
A | 0.500000000000000000
B | 0.333333333333333333
(3 rows)
当然,您可以用不同的方式重新编写它。例如:
SQL> SELECT
a.type
, a.cnt/b.tot as perc
FROM
(SELECT type , count (*) as cnt
FROM product
GROUP BY type) a
CROSS JOIN
(SELECT count (*) AS tot
FROM product) b
ORDER BY 1
;
type | perc
------+----------------------
A | 0.500000000000000000
B | 0.333333333333333333
C | 0.166666666666666667
(3 rows)
你(现改为)查询工作正常,我(使用Vertica的7.0) –