0

さまざまなプールに何台の車があるかをリストする必要があります。

これが私が得るものです:

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)

しかし、私は真ん中の値を気にしません。私は最初と最後の文字(私たちが使用する車の分類と内部値)にのみ興味があります。

可能であれば、どうすれば次のようなものを入手できますか?

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

4

1 に答える 1

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

これは、中央部分に常に2桁が含まれていることを前提としています。そうでない場合は、それに対処するために正規表現を調整する必要があります。

于 2013-03-26T15:06:15.787 に答える