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

    [sql] aiuto query per estrarre orari

    io faccio una query del genere per vedere gli orari di punta delle telefonate in un call center, ma non capisco dove sbaglio :master:

    codice:
    SELECT count( CASE WHEN HOUR(dataeora) BETWEEN 9 AND 10 THEN 1 ELSE NULL ) AS a,
    count( CASE WHEN HOUR(dataeora) BETWEEN 10 AND 11 THEN 1 ELSE NULL ) AS b,
    count( CASE WHEN HOUR(dataeora) BETWEEN 11 AND 12 THEN 1 ELSE NULL ) AS c,
    count( CASE WHEN HOUR(dataeora) BETWEEN 12 AND 13 THEN 1 ELSE NULL ) AS d,
    count( CASE WHEN HOUR(dataeora) BETWEEN 13 AND 14 THEN 1 ELSE NULL ) AS e,
    count( CASE WHEN HOUR(dataeora) BETWEEN 14 AND 15 THEN 1 ELSE NULL ) AS f,
    count( CASE WHEN HOUR(dataeora) BETWEEN 15 AND 16 THEN 1 ELSE NULL ) AS g,
    count( CASE WHEN HOUR(dataeora) BETWEEN 16 AND 17 THEN 1 ELSE NULL ) AS h,
    count( CASE WHEN HOUR(dataeora) BETWEEN 17 AND 18 THEN 1 ELSE NULL ) AS i,
    count( CASE WHEN HOUR(dataeora) BETWEEN 18 AND 19 THEN 1 ELSE NULL ) AS l,
    count( CASE WHEN HOUR(dataeora) BETWEEN 19 AND 20 THEN 1 ELSE NULL ) AS m
    FROM cc_inbound
    ricevo un errore del genere:
    #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ') AS a,
    count( CASE WHEN HOUR(dataeora) BETWEEN 10 AND 11 THEN


    ho provato a cambiare ordine delle parentesi, metterne di più raggruppando il between, ma la sostanza non cambia.


    qualcuno mi sa dire per cortesia dove sbaglio?







    Grazie mille!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Non ho controllato quello che fa la query, però ti posso dire che manda END alla fine di ogni CASE.

  3. #3
    porc!!!!


    sono un cretino! come ho fatto a non vederlo?? ho usato questa sintassi in mille query e solo in questa ho dimenticato l'END.



    sono un idiota! Grazie mille! mi stavo scervellando per nulla!




    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  4. #4
    con una sola condizione tanto vale usare IF invece di CASE... se funziona bene cosi' tanto meglio per te (ma ne dubito). Sarebbe stato meglio un solo CASE con tanti WHEN .....

    any way.... hai un errore di forma. BETWEEN considera il valore di partenza e quello di arrivo, per cui tu ti troveresti con conteggi duplicati.



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    ah pareva strano, ora ho un altro problema

    codice:
    SELECT count( * ) AS totale,
    count( CASE WHEN HOUR(dataeora) BETWEEN 9 AND 10 THEN 1 ELSE NULL END ) AS _9_10,
    count( CASE WHEN HOUR(dataeora) BETWEEN 10 AND 11 THEN 1 ELSE NULL END ) AS _10_11,
    count( CASE WHEN HOUR(dataeora) BETWEEN 11 AND 12 THEN 1 ELSE NULL END ) AS _11_12,
    count( CASE WHEN HOUR(dataeora) BETWEEN 12 AND 13 THEN 1 ELSE NULL END ) AS _12_13,
    count( CASE WHEN HOUR(dataeora) BETWEEN 13 AND 14 THEN 1 ELSE NULL END ) AS _13_14,
    count( CASE WHEN HOUR(dataeora) BETWEEN 14 AND 15 THEN 1 ELSE NULL END ) AS _14_15,
    count( CASE WHEN HOUR(dataeora) BETWEEN 15 AND 16 THEN 1 ELSE NULL END ) AS _15_16,
    count( CASE WHEN HOUR(dataeora) BETWEEN 16 AND 17 THEN 1 ELSE NULL END ) AS _16_17,
    count( CASE WHEN HOUR(dataeora) BETWEEN 17 AND 18 THEN 1 ELSE NULL END ) AS _17_18,
    count( CASE WHEN HOUR(dataeora) BETWEEN 18 AND 19 THEN 1 ELSE NULL END ) AS _18_19,
    count( CASE WHEN HOUR(dataeora) BETWEEN 19 AND 20 THEN 1 ELSE NULL END ) AS _19_20
    FROM cc_inbound
    WHERE dataeora!=0

    questa query non dà errori, però il totale che mi estrae è sbagliato, non coincide con la somma dei valori estratti, o meglio, il totale è corretto, sono i valori estratti che sono canati...dipende da cosa? :master:
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  6. #6
    ti ho anticipato la risposta....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Originariamente inviato da piero.mac
    ti ho anticipato la risposta....
    ho notato


    comunque ho tolto di mezzo il BETWEEN e ho usato semplici controlli con l'= e funziona 'na meraviglia


    quando dici Sarebbe stato meglio un solo CASE con tanti WHEN ..... cosa intendi? hai mica un piccolo esempietto? poi lo adatto io, comunque ora cerco!



    Grazie mille!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  8. #8
    sono tornato ora sull'argomento perché nel frattempo ho avuto altro da fare...

    su mysql.com ho trovato questo: http://dev.mysql.com/doc/refman/5.0/...statement.html ma mica ho capito la sintassi

    come la devo strutturare la query?^
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

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 © 2025 vBulletin Solutions, Inc. All rights reserved.