Назад | Перейти на главную страницу

Как посчитать уникальные значения?

Я пытаюсь получить количество уникальных 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