Hi!

I'm trying to build a query to get if there is an occurrence for a field for each alphabetical letter.
My first thought to know it was to do something like:

SELECT COUNT(field) FROM table WHERE UPPER( field ) LIKE UPPER( 'A%' ) LIMIT 1; SELECT COUNT(field) FROM table WHERE UPPER( field ) LIKE UPPER( 'B%' ) LIMIT 1; SELECT COUNT(field) FROM table WHERE UPPER( field ) LIKE UPPER( 'C%' ) LIMIT 1;
...
and so on...

Is there any way to do it in only one query??

I'm not sure if i understand you correctly, sorry, if not.

test=*# select * from w;
   t
--------
 test
 foo
 bar
 foobar
(4 rows)

test=*# select chr(x), count(1) from generate_series(65,90) x, w where
upper(substring (w.t from 1 for 1)) ~ chr(x) group by 1;
 chr | count
-----+-------
 T   |     1
 B   |     1
 F   |     2
(3 rows)



Andreas
It's exactly what i want. Just one more thing... What if i want also the ones that begin by a non-alphabetical character.
In your example:

test=*# select * from w;
  t
--------
test
foo
bar
foobar
1foobar
/ertw
@weras


and have:
chr | count
-----+-------
T   |     1
B   |     1
F   |     2
_   |     3
(4 rows)


---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

              http://archives.postgresql.org

Reply via email to