使用两个不同列的百分比,在子语句中使用组

时间:2017-10-12 13:02:01

标签: sql postgresql subquery percentage

  1. 我已经为它编写了代码,但是没有回复,我使用的是postgreSQL。

  2. 我想要的最后一件事就是找到THE ERROR PERCENTAGE STATUS(参见状态colounm,其中有200 Ok或者没有找到)每天都有。

    FOR EG-- 2016/07/22 - 1.5%错误

    P.S数据库非常大,具有不同的状态和日期,我想要 结果日期明智

  3. 在上面的代码中,我试图找到每天的(未发现状态/总状态)

  4. 代码是: -

    SELECT status, date(time), round(coun/total) AS percent
    FROM log,
    
    (SELECT count(*) AS coun
    FROM log 
    WHERE status NOT LIKE '200 OK'
    GROUP BY date(time) 
    ORDER BY date(time)) c, 
    
    
    (SELECT  count(*) AS total
    FROM log GROUP BY  
    date(time) 
    ORDER BY date(time)) t 
    
    
    GROUP BY date(time), status, percent
    ORDER BY date(time);
    

    我拥有的数据库就像那样...... enter image description here

1 个答案:

答案 0 :(得分:0)

SELECT distinct status, date(time), round(count(1) over (partition by date(time))/count(1) over ()) AS percent, count(1) over (partition by date(time)), count(1) over ()
FROM log

它会给你每天的状态百分比。不仅不是200,而且所有这些都更有意义,因为你不会在一般查询中过滤它。

或者您可以在结束之前添加FILTER (where status NOT LIKE '200 OK'),如果您仍然想要它,可以计算。

但一般的想法是不要扫描同一个表三次而不加入结果......