2010-06-15 2 views
2

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

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» для всех интерфейсов на каждой лопасти, для каждого маршрутизатора (например, ... для Г1 , сколько интерфейсов на blade-сервере 1 (GigabitEthernet1/1-48) имеют «ifadminstat = 2» и «ifoperstat = 2».

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

ответ

3
select hostname, ip, count(1) 
    from table 
where ifadminstat = 2 and ifoperstat = 2 
group by hostname, ip 
+0

Благодарим за ответ. Проблема у меня есть, мне нужен счет для каждого клинка в коммутаторе. Для каждого адреса и каждого лезвия, сколько = 2. Я считаю, что мне нужно какое-то количество регулярных выражений (подстрока (ifdesc, 'Ethernet1/*) – dars

0

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

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 
Смежные вопросы