我使用Postgres 9.1来计算给定时间段内唯一的患者就诊次数,使用为每个患者输入的发票。
我有两列,分别是transactions.ptnumbertransactions.dateofservice,可以按以下方式计算患者的就诊量:

select count(*)
from transactions
where transactions.dateofservice between '2012-01-01' and '2013-12-31'

问题是,有时一个病人可能会得到两张同一天的发票,但这应该算作只有一个病人就诊。
如果我在SELECT DISTINCT栏上使用GROUP BYtransactions.ptnumber,这将计算就诊的患者数量(而不是就诊次数)。
如果我在SELECT DISTINCT列上使用GROUP BYtransactions.dateofservice,这将计算有发票的天数。
不知道该怎么做。

最佳答案

这将返回独特的病人每天。

select count(distinct transactions.ptnumber) as cnt
from transactions
where transactions.dateofservice between '2012-01-01' and '2013-12-31'
group by transactions.dateofservice

你可以把它们加起来,得到整个时期唯一的病人
select sum(cnt) from (
  select count(distinct transactions.ptnumber) as cnt
  from transactions
  where transactions.dateofservice between '2012-01-01' and '2013-12-31'
  group by transactions.dateofservice
)

关于sql - SQL中的唯一访问次数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25528230/

10-11 06:30