首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有当组中的所有记录与条件匹配时,才会进行分组并返回结果

只有当组中的所有记录与条件匹配时,才会进行分组并返回结果
EN

Stack Overflow用户
提问于 2016-06-09 05:43:17
回答 2查看 44关注 0票数 0

DB结构如下:

地址有很多计划乔布斯有很多UserJobs

我试图将所有为特定地址完成的工作组合在一起,而不管计划如何。

在那里,我只想看到那些还没有完成一项成功工作的地址。

成功的工作是当UserJobs.perfomance =准时或UserJobs.perfomance =迟

代码语言:javascript
复制
SELECT
  "addresses"."address1",
  "user_jobs"."performance"

FROM
  "addresses" JOIN "plans" ON "addresses"."id" = "plans"."address_id" 
  JOIN "jobs" ON "plans"."id" = "jobs"."plan_id" 
  JOIN "user_jobs" ON "jobs"."id" = "user_jobs"."job_id"

group by   
  "addresses"."address1",
  "user_jobs"."performance"

我试着构建上面的查询,但我已经看到了其中的缺陷。它将按地址分组,但如果在该地址中有不同的性能,它将分裂。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-09 05:52:01

如果要计算已完成的成功工作,可以使用条件聚合:

代码语言:javascript
复制
SELECT
  "addresses"."address1",
  COUNT(CASE 
           WHEN "user_jobs"."performance" IN ('ontime', 'late') THEN 1
        END) AS cnt  
FROM
  "addresses" JOIN "plans" ON "addresses"."id" = "plans"."address_id" 
  JOIN "jobs" ON "plans"."id" = "jobs"."plan_id" 
  JOIN "user_jobs" ON "jobs"."id" = "user_jobs"."job_id"    
GROUP BY   
  "addresses"."address1
票数 1
EN

Stack Overflow用户

发布于 2016-06-09 09:22:00

“组中的所有记录都符合标准”,-> bool_and聚合函数

代码语言:javascript
复制
select "addresses"."address1" FROM
    "addresses" JOIN "plans" ON "addresses"."id" = "plans"."address_id" 
    JOIN "jobs" ON "plans"."id" = "jobs"."plan_id" 
    JOIN "user_jobs" ON "jobs"."id" = "user_jobs"."job_id"

   group by   
     "addresses"."address1"
   HAVING bool_and("user_jobs"."performance" IN ('ontime', 'late'))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37717732

复制
相关文章

相似问题

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