首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何区分不同条件下的两个查询?

如何区分不同条件下的两个查询?
EN

Stack Overflow用户
提问于 2020-02-05 21:59:03
回答 2查看 90关注 0票数 0

表中有“经理”列和“状态”列。如何计算除N/A外所有状态的全部记录的全部状态,以及每个经理的全部记录的分割总数?

我试图用这种方式来描绘,但什么也没有得到。

第一个查询

代码语言:javascript
复制
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;

第二次查询

代码语言:javascript
复制
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个查询)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-05 22:04:26

您可以进行条件聚合:

代码语言:javascript
复制
SELECT 
    "Manager Name", 
    COUNT(*) FILTER(WHERE "Performance Score" = 'Fully Meets') Perfomance_Fully_Meets,
    COUNT(*) Performance_Not_NA,
    AVG( ("Performance Score" = 'Fully Meets')::int) Performance_Ratio
FROM public.hr_dataset  
WHERE "Performance Score" != 'N/A- too early to review' 
GROUP BY "Manager Name"
ORDER BY Perfomance DESC;

这项工作如下:

对状态(这实际上包括每个管理器的status)

  • aggregate按管理器名称

  • )的
  • 过滤器,对每个管理器执行一个有状态'Fully Meets'的记录的条件计数,每个管理器在列Perfomance_Fully_Meets
  • for中呈现,计数记录的总数('N/A'已经过滤掉了),在Performance_Not_NA
  • if列中,您想要'Fully Meets'记录的比率,您可以根据条件Performance Score" = 'Perfomance_Fully_Meets的结果使用d18来完成它;在数值上下文中,真条件计算为1,false计算为1。
票数 1
EN

Stack Overflow用户

发布于 2020-02-05 22:04:03

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

代码语言:javascript
复制
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";

顺便说一句,你的专栏名字很糟糕,有很多空格和帽子之类的东西.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60084727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档