Como contar valores únicos?

9

Estou tentando obter o número de ip_addresses exclusivos (neste caso, '3'). A tabela é assim:

Estrutura:

CREATE TABLE bandits (
  key text NOT NULL,
  ip_address inet,
  offence text,
  count bigint DEFAULT 1);

Dados:

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
    
por Tie-fighter 15.02.2011 / 02:46

2 respostas

12
SELECT COUNT(DISTINCT ip_address) FROM bandits
    
por 15.02.2011 / 03:00
2

Como mencionado aqui: link , pode ser muito mais rápido usar uma versão um pouco mais longa em vez disso:

SELECT count(*) FROM (SELECT DISTINCT ip_address FROM bandits) AS bandits_distinct
    
por 04.03.2016 / 23:10