In SQL (postgresql 8.4.x), wie kann ich effizient COUNT
die Anzahl des IP-Datensätze, die in dem kleinsten netblock möglicherweise netblocks umfasst? Ich möchte 10.0.0.1
unter 10/8
und 0/0
zum Beispiel nicht zählen.Counting Datensätze pro kleinstem netblock (Intervall)
Konkreter gegeben:
-- CREATE TABLE iplog (ip INET NOT NULL, ...)
--
ip | ...
==============+=====
192.168.1.100 | ...
192.168.1.101 | ...
192.168.55.5 | ...
10.1.2.3 | ...
-- CREATE TABLE netblocks (nb CIDR UNIQUE NOT NULL, ...)
--
nb | ...
===============+======
192.168.1.0/24 | ...
192.168.0.0/16 | ...
10.0.0.0/8 | ...
0.0.0.0/0 | ...
Wie kann ich die Ergebnismenge effizient produzieren:
nb | ips_logged
===============+============
192.168.1.0/24 | 2
192.168.0.0/16 | 1
10.0.0.0/8 | 1
denke ich, Ihre Frage und meine Antwort wäre besser passen auf [dba.se] (http: // dba .stackexchange.com /) - Wenn Sie einverstanden sind, sind Sie bereit, sich für die Migration selbst zu melden? Ich sehe, Sie haben bereits ein Konto ... –