sql - SQL 显示由其他值计算的一个结果?
问题描述
看来我们可以使用SQL
如下语句:
select
(
select
count(*) as c_foos
from
foos
),
(
select
count(*) as c_bars
from
bars
);
但我们做不到
select
(
select
count(*) as c_foos
from
foos
),
(
select
count(*) as c_bars
from
bars
),
(
select
(c_foos / c_bars) as the_ratio
);
或者
select
(
select
count(*) as c_foos
from
foos
),
(
select
count(*) as c_bars
from
bars
),
(c_foos / c_bars) as the_ratio;
有没有办法显示所有 3 个数字?有什么可以做什么不能做的更明确的规则吗?
解决方案
你可以试试这个:
您在一个子句中定义了两个 CTE WITH
,因此您可以在基于两个 cte 表(cte_num
和cte_den
)的主查询中使用您的结果
WITH recursive
cte_num AS (
SELECT count(*) as c_foos
FROM foos
),
cte_den AS (
SELECT count(*) as c_bars
FROM bars
)
SELECT
cte_num.foos,
cte_den.bars,
cte_num.foos / cte_den.bars as the_ratio
from cte_num, cte_den;
推荐阅读
- python - Python groupby 函数对数据表进行重新排序
- python - 展开列表中的列表
- nestjs - 我可以在 Nestjs OpenAPI 中进行多态响应吗?
- ios - 如何使用 CMake 获取 iOS appex 文件
- python - 为什么我的回归线低于所有回归点?
- css - 创建这个 CSS 选择器的正确方法是什么?
- javascript - 引用分配给 getElementById 的变量时收到错误
- firebase - 关于 Firebase 连接
- python - 如何在使用 matplotlib 中的 FuncAnimation 时为不同的帧设置固定范围的颜色条
- google-app-engine - 在 App Engine (Flex) 中哪里可以找到堆转储