我已经为信息汇总表构建了一个查询,它几乎完成了,但有一个小错误。如果一个类(class)有多个用户,confirmed_class_count
变量会返回太高,这让我相信这个数字不明显
这是我当前的代码:
SELECT "staffs".*,
count(distinct subclasses) as class_count,
sum(case when users.confirmed_at is not null then 1 else 0 end) confirmed_class_count
FROM
staffs
INNER JOIN classes as subclasses on staffs.staff_id = ANY(subclasses.staff)
INNER JOIN "classes_users" ON "classes_users"."class_id" = "subclasses"."id"
INNER JOIN "users" ON "users"."id" = "classes_users"."user_id"
INNER JOIN class_types ON class_types.code = subclasses.class_type_code
WHERE
(subclasses.closed_date is NULL OR subclasses.closed_date > '2019-09-06')
GROUP BY
staffs.id ORDER BY "staffs"."full_name" ASC
我想用 (select distinct count(*) from subcases where users.confirmed_at is not null) as confirmed_case_count
替换 sum
但我得到 关系“子类”不存在
。
我怎样才能得到我想要的东西?
最佳答案
您可以将非重复计数与条件聚合结合使用。替换
sum(class when users.confirmed_at is not null then 1 else 0 end) confirmed_class_count
^ looks like a typo, this should be case not class
与
count(distinct case when users.confirmed_at is not null then classes_users.class_id end) confirmed_class_count
关于sql - 如何获得命名内部联接的非重复计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57827140/