簡體   English   中英

獲得count postgres的計數總和

[英]get sum of count of count postgres

我有兩個表的jobsusers 用戶與工作具有一對多關系。

我想將用戶划分為Jobs_done組。 換句話說,有多少用戶執行了1個作業,2個作業,3個作業,等等。下面的查詢執行該操作。 但是,我想將所有完成3個或更多工作的用戶歸為一組。

這是我目前有的查詢

select
  jobs_done,
   count(1) as number_of_users
  from ( select 
     u.id,
      count(*) as jobs_done
   from jobs j
  JOIN users u on j.user_id = u.id 
  group by  u.id ) a
group by jobs_done 

電流輸出:

times_used  number_of_users  
1           255  
2           100  
3           30  
4           10  
5           9  

所需輸出:

times_used  number_of_users  
1           255  
2           100  
3+          49  

您可以使用case表達式將值3+分組為一個大組。 這應該工作:

select
    case 
       when jobs_done >= 3 then '3+' 
       else cast(jobs_done as varchar(5)) 
    end as jobs_done,
    count(1) as number_of_users
from ( 
    select 
       u.id,
       count(*) as jobs_done
    from jobs j
    join users u on j.user_id = u.id 
    group by  u.id 
) a
group by case when jobs_done >= 3 then '3+' 
             else cast(jobs_done as varchar(5)) 
         end;

您基本上可以將所有內容分組。 這是一個簡單的例子:

test=# SELECT CASE WHEN x < 4 THEN x::text ELSE '4+' END AS y, 
              count(*) 
       FROM generate_series(1, 10) AS x 
       GROUP BY y 
       ORDER BY 1;
 y  | count 
----+-------
 1  |     1
 2  |     1
 3  |     1
 4+ |     7
(4 rows)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM