2013-03-26 6 views
0

Мне нужно указать, сколько автомобилей у меня на разных пулах.Postgresql: Совокупные результаты по узорам

Вот что я получаю:

select count(*), pool from cars group by 2 order by 1 desc; 

count | pool 
-------+-------- 
    71 | A-12-A 
    69 | B-45-A 
    19 | A-45-B 
    18 | A-69-A 
    15 | B-12-B 
    13 | A-67-B 
(6 rows) 

Но я не забочусь AVOUT среднего значения. Меня интересует только первое и последнее письмо (классификация автомобиля и внутреннее значение, которое мы используем).

Если это вообще возможно, как я могу получить что-то вроде этого:

count | pool 
-------+-------- 
    89 | A-%-A 
    69 | B-%-A 
    32 | A-%-B 
    15 | B-%-B 
(6 rows) 

?

ответ

1

Что-то вроде этого:

select count(*) as cnt, 
     regexp_replace(pool, '-[0-9]{2}-', '-%-', 'gi') as clean_pool 
from cars 
group by clean_pool 
order by 1 desc; 

SQLFiddle: http://sqlfiddle.com/#!12/ac449/2

Это предполагает, что средняя часть всегда содержит две цифры. Если это не так, вам нужно настроить регулярное выражение, чтобы справиться с этим.

+0

Большое спасибо, это именно то, что я искал. – abitmol

Смежные вопросы