1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

mehrere Ausgaben gruppieren ?

Dieses Thema im Forum "Oracle" wurde erstellt von lireboy, 12 Januar 2020.

  1. lireboy

    lireboy Neuer Benutzer

    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
      Dateigröße:
      3,9 KB
      Aufrufe:
      3
  2. castorp

    castorp Datenbank-Guru

    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
    
     
  3. akretschmer

    akretschmer Datenbank-Guru

    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 ...
     
  4. akretschmer

    akretschmer Datenbank-Guru

    ha, @castorp war wieder schneller ;-)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden