PSQL 不计算所有条目

PSQL not counting all entries

我正在编写一个计数查询,用于统计几年内参加活动的人数。但是,有一个名为 status 的列,其中包含有关出勤的额外信息。 Apology 在该人未出席时列出,因此应排除在外。 status有各种条目,包括小组信件、出席信息、客人状态,以及NULL条目。

问题是并非所有的出席人数都被完整统计。删除 status NOT LIKE 'Apology' 后,它们将被完整计算。

我怎样才能计算出所有条目?而不是从 1583 个中有限地选择 364 个。

我在 pgAdmin III v1.18.1 中使用 psql v9.3.11。

相关代码如下:

SELECT b.attendances,
    COUNT(b.attendances)
FROM (
    SELECT COUNT(a.event_id) as attendances
    FROM (SELECT DISTINCT event_id AS event_id,
        member_pers_id AS member_pers_id
        FROM event_attendance
        WHERE status NOT LIKE 'Apology') a
    GROUP BY member_pers_id
    ORDER BY attendances) b
GROUP BY attendances
ORDER BY attendances ASC

我怀疑 NOT LIKE 正在过滤掉其他值,例如 NULL。如果是这样,那么明确地测试它。

另外,做这么多聚合也没有意义。一个就够了:

      SELECT COUNT(a.event_id) as attendances
      FROM (SELECT DISTINCT event_id, member_pers_id
            FROM event_attendance
            WHERE status NOT LIKE 'Apology' OR status IS NULL
           ) a

而且我不确定 SELECT DISTINCT 是否有必要