首页 > 解决方案 > 如何划分不同条件的两个查询?

问题描述

有一个表,其中包含管理器列和状态列。如何计算Fully的总状态,每个经理除N / A之外的所有状态的记录总数?

我试图以这种方式描绘,但没有任何结果

第一次查询

SELECT "Manager Name", count("Performance Score") as Perfomance FROM public.hr_dataset  WHERE 
("Performance Score" = 'Fully Meets') GROUP BY "Manager Name"
ORDER BY Perfomance DESC;

第二次查询

SELECT "Manager Name", count("Performance Score") FROM public.hr_dataset 
WHERE ("Performance Score" != 'N/A- too early to review') GROUP BY "Manager Name";

需要接收具有名称和值的两列(1 个查询/2 个查询)

标签: sqlpostgresqlgroup-bypivot

解决方案


如果我理解这一点,您可以使用FILTER根据性能得分来限制计数的行。

SELECT "Manager Name",
       count(*) FILTER (WHERE "Performance Score" = 'Fully Meets')
       /
       count(*) FILTER (WHERE "Performance Score" <> 'N/A- too early to review')
       FROM public.hr_dataset
       GROUP BY "Manager Name";

顺便说一句,你那里的列名很糟糕,所有的空格和大写字母等等......


推荐阅读