Я пытаюсь получить количество уникальных ip_addresses (в данном случае «3»). Таблица выглядит так:
Структура:
CREATE TABLE bandits (
key text NOT NULL,
ip_address inet,
offence text,
count bigint DEFAULT 1);
Данные:
COPY bandits (key, ip_address, offence, count) FROM stdin; 127.0.0.1_testing 127.0.0.1 testing 1 127.0.0.2_testing 127.0.0.2 testing 3 127.0.0.2_testing2 127.0.0.2 testing2 1 127.0.0.3_testing 127.0.0.3 testing 1
SELECT COUNT(DISTINCT ip_address) FROM bandits
Как упоминалось здесь: https://stackoverflow.com/questions/11250253/postgresql-countdistinct-very-slow, было бы намного быстрее использовать вместо этого немного более длинную версию:
SELECT count(*) FROM (SELECT DISTINCT ip_address FROM bandits) AS bandits_distinct