Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Problema con espressone Case when in mysql

    Ciao a tutti,
    ho il seguente problema:
    ho una query pivot che mi deve contare il numero delle chiamate che hanno lo stato = "NOT SERVED" e la durata delle chiamate inferiore a 30.

    il codice è il seguente:

    codice:
    select detailDestinationName as 'Nome Coda',count(*) as 'Totale Chiamate ricevute',
    count(case when status = 'SERVED' then uniqueId else null end) as 'Chiamate Servite',
    (count(case when status = 'SERVED' then uniqueId else null end)/count(*)*100) as '% chiamate servite',
    
    count(case when status = 'NOTSERVED' and conversationTime > 30 then uniqueId else null end) as 'Chiamate non Servite Superiori a 30 secondi'
    from chiamate_report
    group by detailDestinationId


    Il problema è che la colonna 'Chiamate non servite inferiori a 30 secondi' mi fornisce sempre 0 come risultato
    Potete aiutarmi?
    Grazie
    Ultima modifica di Andreawave; 09-09-2019 a 16:41

  2. #2
    conversationTime è un campo intero che contiene i secondi di conversazione?

  3. #3
    (a parte che parli di inferiore e poi nella query c'è maggiore...)

  4. #4
    Quote Originariamente inviata da optime Visualizza il messaggio
    conversationTime è un campo intero che contiene i secondi di conversazione?
    si

  5. #5
    hai provato a fare

    SELECT * FROM chiamate_reportwhere status = 'NOTSERVED' and conversationTime > 30

  6. #6
    Quote Originariamente inviata da optime Visualizza il messaggio
    hai provato a fare

    SELECT * FROM chiamate_report where status = 'NOTSERVED' and conversationTime > 30
    Allora adesso vedo che il risultato è corretto e che infatti conta le chiamate not served con tempo < 30 secondi.
    Il problema adesso è sul calcolo delle percentuali che mi dà sempre il 0%.

    Il codice è questo:
    codice:
    ifnull((count(case when status = 'NOTSERVED' and conversationTime > 30 then uniqueId else null end)/count(case when status = 'NOT SERVED' then uniqueId else null end)*100),0) as '% chiamate non servite superiore a 30 secondi',
    E' corretta?

  7. #7
    hai scritto NOTSERVED e NOT SERVED
    è quello che capita a gestire gli status con le stringhe anziché con i numeri...

  8. #8
    Quote Originariamente inviata da optime Visualizza il messaggio
    hai scritto NOTSERVED e NOT SERVED
    è quello che capita a gestire gli status con le stringhe anziché con i numeri...
    Grazie mille!! Che la Madonna t'accompagni!!
    E' dalle 8 che sono a lavoro e ho gli occhi che si incrociano

  9. #9

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.