如何使用sql代码计算患病率

时间:2019-07-15 08:04:48

标签: sql postgresql

我正在尝试计算sql中的流行率。 有点写代码。 我想制作自动化代码。

我已经检查出我有1453477的样本量,使用计数的患病人数是851451。 患病率的计算公式是患病人数/样本数量。

select (COUNT(condition_id)/COUNT(person_id)) as prevalence
from disease
where condition_id=12345;

当我运行上面的代码时,我得到1作为输出,我想得到0.5858。

有人可以帮帮我吗? 谢谢!

3 个答案:

答案 0 :(得分:0)

您可以通过

进行投射

count(...)/count(...)::numeric(6,4)

count(...)/count(...)::decimal

作为两个选项。

重要点应用于强制转换到denominatornumerator部分(在这种情况下为denominator),不适用于除法

(count(...)/count(...))::numeric(6,4)再次产生一个整数。

答案 1 :(得分:0)

在当前查询中,一次使用condition_id列,一次使用person_id列来统计疾病表中的行数。但是行数相同-这就是为什么结果为1的原因。

我认为您需要为这些列查找不同值的数量。可以使用count count来完成:

select (COUNT(DISTINCT condition_id)/COUNT(DISTINCT person_id)) as prevalence
from disease
where condition_id=12345;

答案 2 :(得分:0)

我很确定您想要的逻辑是这样的:

import Network
import Dispatch

let connection = NWConnection(host: .ipv6(.linkLocalNodes), port: 9898, using: .udp)

connection.stateUpdateHandler = { state in print(state) }
connection.start(queue: DispatchQueue(label: "UDP"))

您的版本没有样本大小,因为您要过滤掉没有条件的人。

如果数据中有重复的人,则这要复杂一些。一种方法是:

select avg( (condition_id = 12345)::int )
from disease;