web-dev-qa-db-ja.com

一意の値を数える方法は?

一意のip_addresses(この場合は「3」)の数を取得しようとしています。テーブルは次のようになります。

構造:

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

データ:

 COPY盗賊(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 
9
Tie-fighter
SELECT COUNT(DISTINCT ip_address) FROM bandits
15
Mark Henderson

ここで述べたように https://stackoverflow.com/questions/11250253/postgresql-countdistinct-very-slow 、代わりに少し長いバージョンを使用する方がはるかに高速になる可能性があります:

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