如何划分两个计数列?
How can divide two counted columns?
我有以下代码:
SELECT (
SELECT COUNT(distinct user_id)
FROM re_read
) AS re_user_id,
(
SELECT COUNT(distinct user_id)
FROM first_read
) AS first_user_id;
结果是:
re_user_id | first_user_id
--------------------------
66231 | 210023
但我想将这两个值相除并得到 re_user_id / first_user_id = 0,31535.
我应该如何在 PostgreSQL 中执行此操作?
只需用 /
运算符将两个值相除即可。
我还乘以 1.0
来覆盖整数除法。
SELECT 1.0 * (
SELECT COUNT(distinct user_id)
FROM re_read
)
/
(
SELECT COUNT(distinct user_id)
FROM first_read
) AS ratio
有一个名为 CTE 的有用的东西。
使用它:
with t as (
SELECT (
SELECT COUNT(distinct user_id)
FROM re_read
)::numeric AS re_user_id,
(
SELECT COUNT(distinct user_id)
FROM first_read
)::numeric AS first_user_id)
select re_user_id, first_user_id, re_user_id / first_user_id as division from t;
注意 CTE 查询中的类型转换。
有很多方法。这里还有两个。
使用 values
并强制转换:
select x, y, x/y ratio from
(
values
(
(SELECT COUNT(distinct user_id) FROM re_read)::numeric,
(SELECT COUNT(distinct user_id) FROM first_read)::numeric
)
) t(x,y);
或嵌套 select
并强制转换:
select x, y, x/y ratio from
(
select
(SELECT COUNT(distinct user_id) FROM re_read)::numeric,
(SELECT COUNT(distinct user_id) FROM first_read)::numeric
) t(x,y);
我有以下代码:
SELECT (
SELECT COUNT(distinct user_id)
FROM re_read
) AS re_user_id,
(
SELECT COUNT(distinct user_id)
FROM first_read
) AS first_user_id;
结果是:
re_user_id | first_user_id
--------------------------
66231 | 210023
但我想将这两个值相除并得到 re_user_id / first_user_id = 0,31535.
我应该如何在 PostgreSQL 中执行此操作?
只需用 /
运算符将两个值相除即可。
我还乘以 1.0
来覆盖整数除法。
SELECT 1.0 * (
SELECT COUNT(distinct user_id)
FROM re_read
)
/
(
SELECT COUNT(distinct user_id)
FROM first_read
) AS ratio
有一个名为 CTE 的有用的东西。
使用它:
with t as (
SELECT (
SELECT COUNT(distinct user_id)
FROM re_read
)::numeric AS re_user_id,
(
SELECT COUNT(distinct user_id)
FROM first_read
)::numeric AS first_user_id)
select re_user_id, first_user_id, re_user_id / first_user_id as division from t;
注意 CTE 查询中的类型转换。
有很多方法。这里还有两个。
使用 values
并强制转换:
select x, y, x/y ratio from
(
values
(
(SELECT COUNT(distinct user_id) FROM re_read)::numeric,
(SELECT COUNT(distinct user_id) FROM first_read)::numeric
)
) t(x,y);
或嵌套 select
并强制转换:
select x, y, x/y ratio from
(
select
(SELECT COUNT(distinct user_id) FROM re_read)::numeric,
(SELECT COUNT(distinct user_id) FROM first_read)::numeric
) t(x,y);