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

    Giornate lavorative in un dato mese

    Salve!

    Ho una tabella database che contiene le ore lavorate ai vari progetti (giorno per giorno).

    La tabella "ora" ha:
    un campo "data" con un valore tipo: "03/01/07"
    epoi il campo "ore" con un valore tipo "2.5"

    Vorrei poter calcolare la media giornaliera delle ore lavorative di un certo mese.

    Come eseguo la query?
    Grazie
    Andrea

  2. #2
    Se la tua tabella contiene solo i tuoi valori (ha ad esempio solo il campo ore e data) basta fare:

    codice:
    select avg(ore) as media_ore, data
    from tabella
    group by data
    Se vuoi ci puoi anche piazzare un order by alla fine.

    Se invece hai diversi utenti:
    codice:
    select avg(ore) as media_ore, utente,data
    from tabella
    group by utente,data
    Così ti calcolerà per ogni mese la media di ogni utente.

    Se, infine, hai gli utenti ma vuoi solo la tua di media:
    codice:
    select avg(ore) as media_ore, data
    from tabella
    where idutente=numero
    group by data

  3. #3
    Grazie!

    Ma ho un problema. Se voglio ordinare i risultati per data mi viene fuori un casino. Il formato della data giorno/mese/anno non me lo permette. Nel mio caso i primi 4 risultati sono questi:

    Stunden pro Werktag amonsul, 01/02/07, 4
    amonsul, 01/03/07, 9
    amonsul, 01/05/07, 8
    amonsul, 01/10/07, 15
    Come ordinarli correttamente?

    Inoltre ho bisogno di sapere come visuallizzare i seguenti risultati:
    1) Somma delle ore lavorate nel mese di ottobre (mese corrente).
    2) Media calcolata dalla somma diviso giorni lavorativi.

    Grazie!

  4. #4
    Ma fammi capire, il campo data e di tipo data o stringa?

  5. #5
    stringa purtroppo!

  6. #6
    brutta gatta da pelare.

    Per poter ordinare in maniera giusta dovresti fare una cosa di questo genere:
    codice:
    select avg(ore) as media_ore, data
    from tabella
    group by data
    order by substring(data,7,2), substring(data,4,2), substring(data,1,2)
    Non so se substring funzioni anche in mysql ma dovrebbe, inoltre devi avere l'assoluta certezza che la stringa data sia sempre e solo nel formato GG/MM/AA, che non capiti una cosa tipo 1/12/07 o 15/1/07.

    Per la prima domanda (considerando sempre valide le cose che ti ho detto sopra):

    codice:
    select sum(ore) as somma_ore
    from tabella
    where data like '__/10/07'
    group by data
    Il carattere _ nel like a differenza di % dice di prendere un determinato numero di caratteri a sinistra o destra della stringa e non tutti o nessuno.

    La seconda domanda me la dovresti un attimo spiegare che non l'ho capita

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.