我在Postgres 9.4工作。我有一张含有药物的表格如下:
bnf_code │ character varying(15) │ not null
pills_per_day │ double precision │
例如,此表可能包含代码为04030201
的药物,每天推荐的药片为4,代码为04030202
的药物和每天2的推荐药片。
我还有一张包含处方数量的表格,上面有一张外键:
code │ character varying(15) │ not null
num_pills │ double precision │ not null
processing_date │ date │ not null
practice_id │ character varying(6) │ not null
Foreign-key constraints:
FOREIGN KEY (code) REFERENCES medications(bnf_code) DEFERRABLE INITIALLY DEFERRED
现在我需要确定从0403
开始为所有代码规定的每日剂量。每日剂量定义为实际开出的药丸数量除以每天推荐的药丸数量。
我知道如何为上面的两个特定代码执行此操作:
SELECT (SUM(num_pills) FILTER (WHERE code='04030201') / 4) +
(SUM(num_pills) FILTER (WHERE code='04030202') / 2)
FROM prescriptions
但那是因为我可以在每天的药片中硬编码。
对于从pills_per_day
开始的所有代码,我可以将其扩展为相应的0403
吗?可能有几百个,但如果可能的话,我更喜欢使用单个SQL查询。
答案 0 :(得分:0)
我不确定这是不是你在找什么:
SELECT SUM(p.num_pills/r.pills_per_day)
FROM prescriptions p INNER join recommendations r
ON p.code = r.bnf_code
WHERE p.code Like '0403%'
我假设num_pills
是处方药的数量,而pills_per_day
是推荐的药丸数量。