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
是否有必要
我正在编写一个计数查询,用于统计几年内参加活动的人数。但是,有一个名为 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
是否有必要