postgresql - 如何计算一个表w.r.t中的条目数与另一个表中的条目的百分比

时间:2015-12-01 15:50:41

标签: sql postgresql

我的数据库中有两个表(A& B)(c)。两个表都包含两个coulmns,如下所示

 column name   Datatype

eventtime     timestamp without time zone
serialnumber  numeric

表A包含每天生产的产品总数(良好和降级 - 但在这些表中,它们未定义为受影响/降级)。表B仅包含降级产品的总数。

我想使用降级产品的百分比制作质量过程控制图表w.r.t生产的产品总数(例如,使用序列号加入)。

有人可以告诉我如何获得每天(也是每小时)的百分比值

1 个答案:

答案 0 :(得分:1)

使用date_trunc()按期望的时间段对行进行分组,例如:

select 
    a.r_date::date date, 
    downgraded,
    total, 
    round(downgraded::numeric/total* 100, 2) percentage
from (
    select date_trunc('day', eventtime) r_date, count(*) downgraded
    from b
    group by 1
    ) b
join (
    select date_trunc('day', eventtime) r_date, count(*) total
    from a
    group by 1
    ) a
using (r_date)
order by 1;

    date    | downgraded | total | percentage 
------------+------------+-------+------------
 2015-05-05 |          3 |     4 |      75.00
 2015-05-06 |          1 |     4 |      25.00
(2 rows)