Comment compter des valeurs uniques?

9

J'essaye d'obtenir le nombre d'adresses IP uniques (dans ce cas '3'). Le tableau ressemble à ceci:

Structure:

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

Les données:

COPY bandits (key, ip_address, offense, 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
Tie-fighter
la source
1
Essayezselect distinct .....
John Gardeniers

Réponses:

15
SELECT COUNT(DISTINCT ip_address) FROM bandits
Mark Henderson
la source
1
wow, merci, j'essayais SELECT DISTINCT COUNT [...] etc. Parfois, je ne fais que des visites ...
Tie-fighter
2

Comme mentionné ici: /programming/11250253/postgresql-countdistinct-very-slow , il pourrait être beaucoup plus rapide d'utiliser une version un peu plus longue à la place:

SELECT count(*) FROM (SELECT DISTINCT ip_address FROM bandits) AS bandits_distinct
icl7126
la source