подсчет postgresql - PullRequest
       4

подсчет postgresql

2 голосов
/ 16 июня 2010

Можно ли это сделать в PGSQL?У меня есть представление, которое я создал, где hostname, ip и datacenter взяты из одной таблицы, а ifdesc и if stats - из другой таблицы.выходные данные вида выглядят так:

hostname | ip     | datacenter | ifdesc           | ifadminstat | ifoperstat|
---------- ------------------------------------------------------------------
r1        1.1.1.1     dc       GigabitEthernet1/1      2             1
r1        1.1.1.1     dc       GigabitEthernet1/2      2             2
r1        1.1.1.1     dc       GigabitEthernet1/3      2             2
r1        1.1.1.1     dc       GigabitEthernet1/4      2             1
r1        1.1.1.1     dc       GigabitEthernet2/1      2             2
r1        1.1.1.1     dc       GigabitEthernet2/2      2             2
r2        2.2.2.2     dc       GigabitEthernet1/1      2             2
r2        2.2.2.2     dc       GigabitEthernet1/2      2             2

Мне нужно получить счетчик "ifadminstat = 2" и "ifoperstat = 2" для всех интерфейсов на каждом блейде, для каждого маршрутизатора (например, ...для r1 сколько интерфейсов на блейде 1 (GigabitEthernet1 / 1-48) имеют "ifadminstat = 2" и "ifoperstat = 2".

Я пытаюсь выполнить подсчет в Postgresql, а затем представить результатысайт с использованием PHP.

Ответы [ 2 ]

3 голосов
/ 16 июня 2010
select hostname, ip, count(1)
  from table
 where ifadminstat = 2 and ifoperstat = 2
 group by hostname, ip
0 голосов
/ 22 февраля 2012

Вы уже определили представление.Также можно сделать его более полезным, отключив лезвия в коммутаторе и т. Д.

CREATE VIEW ... AS
SELECT ... 
  substr(ifdesc, 1, strpos(ifdesc, '/') - 1) AS backplane_name,
  substr(ifdesc, strpos(ifdesc, '/') + 1) AS switch_port,
  ...

Оттуда становится довольно тривиально написать ваш запрос.

SELECT host, ip, backplane_name, count(1) AS active_ports
FROM table
WHERE ifadminstat = 2 AND ifoperstat = 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...