Re: Results per letter query
От | Dani Castaños |
---|---|
Тема | Re: Results per letter query |
Дата | |
Msg-id | 467A562C.2020504@androme.es обсуждение исходный текст |
Ответ на | Re: Results per letter query ("A. Kretschmer" <andreas.kretschmer@schollglas.com>) |
Ответы |
Re: Results per letter query
|
Список | pgsql-sql |
>> 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 --------testfoobarfoobar1foobar/ertw@weras and have: chr | count -----+-------T | 1B | 1F | 2_ | 3 (4 rows)
В списке pgsql-sql по дате отправления: