mehrere Ausgaben gruppieren ?

lireboy

Neuer Benutzer
Beiträge
1
Wie kann ich hier die ausgaben zusammenführen ?
Zum Beispiel dass alles was mit "JOB zu tun hat" nur als "Job" ausgegeben wird

SELECT COUNT(*)AS Anzahl,query FROM nasa
WHERE query like 'job'
OR query like '% job %'
OR query like 'job %'
OR query like '% job'
OR query like '%job%'
OR query like 'application'
OR query like 'application %'
OR query like '% application'
OR query like '% application %'
OR query like 'work'
OR query like 'work %'
OR query like '% work'
OR query like '% work %'
OR query like 'work%'
group by query
order by count(*) desc
 

Anhänge

  • test.png
    test.png
    3,9 KB · Aufrufe: 3
Werbung:
Dieser Ausdruck:
Code:
WHERE query like 'job'
OR query like '% job %'
OR query like 'job %'
OR query like '% job'
OR query like '%job%'
kann zu
Code:
WHERE query like '%job%'
vereinfacht werden.
Das Gleiche gilt natürlich auch für die anderen Bedingungen - das % schließt Leerzeichen mit ein.
Um das Ergebnis zu gruppieren kannst Du ein CASE mit einem LIKE verwenden.
Sowas in der Art:
Code:
select case
          when query like '%job%' then 'job'
          when query like '%application%' then 'application'
          when query like '%work%' then 'work'
          else query
       end as query,
       count(*)
from the_table
group by case
          when query like '%job%' then 'job'
          when query like '%application%' then 'application'
          when query like '%work%' then 'work'
          else query
       end
Wenn Du den CASE Ausdruck nicht zweimal schreiben willst, dann kannst Du auch sowas nehmen:
Code:
select query, count(*)
from (
  select case
            when query like '%job%' then 'job'
            when query like '%application%' then 'application'
            when query like '%work%' then 'work'
            else query
         end as query
  from the_table
) x
group by query
 
Lösung mit PostgreSQL:

Code:
test=*# select * from lireboy ;
   query   
-----------
 my job
 your job
 job
 work
 your work
(5 rows)

test=*# select count(1) filter (where query ~  'job') as job, count(1) filter (where query ~ 'work') as work from lireboy ;
 job | work
-----+------
   3 |    2
(1 row)

test=*#

vielleicht geht es ähnlich mit Oraggle ...
 
Werbung:
Zurück
Oben