Dans SQL (postgresql 8.4.x), comment puis-je efficacement COUNT
le nombre d'enregistrements IP entrant dans le plus petit netblock d'englober éventuellement netblocks? Je ne veux pas compter 10.0.0.1
sous les deux 10/8
et 0/0
, par exemple.records de comptage par le plus petit netblock (intervalle)
Plus concrètement, étant donné:
-- 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 | ...
Comment puis-je produire efficacement le jeu de résultats:
nb | ips_logged
===============+============
192.168.1.0/24 | 2
192.168.0.0/16 | 1
10.0.0.0/8 | 1
Je pense que votre question et ma réponse serait un meilleur ajustement sur le [dba.se] (http: // dba .stackexchange.com /) - Si vous êtes d'accord, êtes-vous prêt à considérer l'auto-signalisation pour la migration? Je vois que vous avez déjà un compte ... –