Estrarre dati da gruppo

di il
20 risposte

Estrarre dati da gruppo

Salve a tutti ho creato questo codice per estrarre il più alto valore della colonna H con i corrispondenti campi di A e B. Il database è composto dalla colonna A di tipo date. B è di tipo time e h è decimal. Desidero estrarre il valore più alto H della data del 11/11/2017, del 12/11/2017....e cosi via . il codice creato è :
Select A,B, H from novembre where H=(select Max(H) from novembre)
Tale codice estrae il valore H più alto ma non riesco ad avere altre idee dopo numerosi tentativi di realizzare l'estrazione secondo in gruppo di date come su descritto. Qualcuno può darmi una mano?
Grazie in anticipo

20 Risposte

  • Re: Estrarre dati da gruppo

    Usa un order by descrescente con limit 1
  • Re: Estrarre dati da gruppo

    Ho provato diverse combinazioni tra cui:
    select A,B,H from novembre where H= (select MAX(H) from novembre order by H Desc limit 1
    mi dà sempre il medesimo risultato. Mi spiego più chiaramente: la tabella novembre è strutturata cosi:
    A B H
    2017-11-01 00:00 12
    2017-11-01 00:05 22
    2017-11-01 01:05 40
    2017-11-02 00:00 50
    2017-11-02 00:05 60
    e cosi via.
    Desidererei avere un risultato che mi elenca del giorno 01 il dato H maggiore, lo stesso del giorno 2, del 3 ecc .....
    Qualcuno può consigliarmi qualcosa? Ringrazio per il precedente aiuto
  • Re: Estrarre dati da gruppo

    Select A,B,max (H)
    from novembre
    Group by A,B
    order by A,B
  • Re: Estrarre dati da gruppo

    dezinho ha scritto:


    Select A,B,max (H)
    from novembre
    Group by A,B
    order by A,B
    Con questo codice mi elenca tutti i valori di H con le rispettive date e minuti.
    A me necessita avere una singola riga di ciascun giorno e l'orario corrispondente con il massimo valore.
    es: 2017-11-01 00:00 56
    2017-11-02 12:47 48
    Provvederò a costruire una tabella che raccolga il massimo valore per ciascun giorno con la data e l'ora in cui si è verificato
    Grazie ancora
  • Re: Estrarre dati da gruppo

    La logica della query suggerita da dezinho è corretta.
    Solo che tu non devi raggruppare per [data+ora], ma solo per [data], vedrai che viene corretto.
  • Re: Estrarre dati da gruppo

    gibra ha scritto:


    La logica della query suggerita da dezinho è corretta.
    Solo che tu non devi raggruppare per [data+ora], ma solo per [data], vedrai che viene corretto.
    Ci siamo quasi mi elenca il giorno e il max del giorno ma non visualizza il time esatto corrispondente al valore massimo
    Altri suggerimenti?
  • Re: Estrarre dati da gruppo

    Ma allora vuoi la botte piena e la moglie ubriaca.

    In tal caso devi usare un subquery 'in linea' per ricavare il valore del time impostando la where uguale a [Data] e [H]
  • Re: Estrarre dati da gruppo

    nataw ha scritto:


    Ho provato diverse combinazioni tra cui:
    select A,B,H from novembre where H= (select MAX(H) from novembre order by H Desc limit 1
    mi dà sempre il medesimo risultato. Mi spiego più chiaramente: la tabella novembre è strutturata cosi:
    A B H
    2017-11-01 00:00 12
    2017-11-01 00:05 22
    2017-11-01 01:05 40
    2017-11-02 00:00 50
    2017-11-02 00:05 60
    e cosi via.
    Desidererei avere un risultato che mi elenca del giorno 01 il dato H maggiore, lo stesso del giorno 2, del 3 ecc .....
    Qualcuno può consigliarmi qualcosa? Ringrazio per il precedente aiuto
    Io francamente non ho capito un granchè
    1) cos'è B? Un tempo?
    2) cos'è H? Un intero?
    Nel tuo esempio, quale risultato vuoi ottenere?
    Se ho ben capito (??) allora
    
    select a,b,h from novembre n1 where n1.h = (select max(n2.h) from novembre n2 where n1.a=n2.a)
  • Re: Estrarre dati da gruppo

    +m2+ ha scritto:


    nataw ha scritto:


    Ho provato diverse combinazioni tra cui:
    select A,B,H from novembre where H= (select MAX(H) from novembre order by H Desc limit 1
    mi dà sempre il medesimo risultato. Mi spiego più chiaramente: la tabella novembre è strutturata cosi:
    A B H
    2017-11-01 00:00 12
    2017-11-01 00:05 22
    2017-11-01 01:05 40
    2017-11-02 00:00 50
    2017-11-02 00:05 60
    e cosi via.
    Desidererei avere un risultato che mi elenca del giorno 01 il dato H maggiore, lo stesso del giorno 2, del 3 ecc .....
    Qualcuno può consigliarmi qualcosa? Ringrazio per il precedente aiuto
    Io francamente non ho capito un granchè
    1) cos'è B? Un tempo?
    2) cos'è H? Un intero?
    Nel tuo esempio, quale risultato vuoi ottenere?
    Se ho ben capito (??) allora
    
    select a,b,h from novembre n1 where n1.h = (select max(n2.h) from novembre n2 where n1.a=n2.a)
    B è tipo time H è tipo decimal. il risultato che vorrei ottenere è:
    ottenere una query che estrae dal gruppo data 2017-11-01 il valore massimo H ed i corrispondenti A e B
    cosi per il gruppo data 2017-11-02 poi per il 3 ecc.....
  • Re: Estrarre dati da gruppo

    Non si capisce una ceppa.
    I dati sono quelli, scrivi esattamente il risultato che ti aspetti.
    la mia query fa quanto scrivi ma meglio confermare
  • Re: Estrarre dati da gruppo

    +m2+ ha scritto:


    Non si capisce una ceppa.
    I dati sono quelli, scrivi esattamente il risultato che ti aspetti.
    la mia query fa quanto scrivi ma meglio confermare
    Il risultato che mi aspetto è:
    A B H
    2017-11-01 01:05 0,120
    2017-11-02 04:10 0,98
    2017-11-05 06:09 0,01
    eccc ecc
  • Re: Estrarre dati da gruppo

    nataw ha scritto:


    +m2+ ha scritto:


    Non si capisce una ceppa.
    I dati sono quelli, scrivi esattamente il risultato che ti aspetti.
    la mia query fa quanto scrivi ma meglio confermare
    Il risultato che mi aspetto è:
    A B H
    2017-11-01 01:05 0,120
    2017-11-02 04:10 0,98
    2017-11-05 06:09 0,01
    eccc ecc
    Da questi dati ?
    
    2017-11-01 00:00 12
    2017-11-01 00:05 22
    2017-11-01 01:05 40
    2017-11-02 00:00 50
    2017-11-02 00:05 60
    
  • Re: Estrarre dati da gruppo

    +m2+ ha scritto:


    nataw ha scritto:


    +m2+ ha scritto:


    Non si capisce una ceppa.
    I dati sono quelli, scrivi esattamente il risultato che ti aspetti.
    la mia query fa quanto scrivi ma meglio confermare
    Il risultato che mi aspetto è:
    A B H
    2017-11-01 01:05 0,120
    2017-11-02 04:10 0,98
    2017-11-05 06:09 0,01
    eccc ecc
    Da questi dati ?
    
    2017-11-01 00:00 12
    2017-11-01 00:05 22
    2017-11-01 01:05 40
    2017-11-02 00:00 50
    2017-11-02 00:05 60
    

    +m2+ ha scritto:


    nataw ha scritto:


    +m2+ ha scritto:


    Non si capisce una ceppa.
    I dati sono quelli, scrivi esattamente il risultato che ti aspetti.
    la mia query fa quanto scrivi ma meglio confermare
    Il risultato che mi aspetto è:
    A B H
    2017-11-01 01:05 0,120
    2017-11-02 04:10 0,98
    2017-11-05 06:09 0,01
    eccc ecc
    Da questi dati ?
    
    2017-11-01 00:00 12
    2017-11-01 00:05 22
    2017-11-01 01:05 40
    2017-11-02 00:00 50
    2017-11-02 00:05 60
    
    I giorni son orari sono diversi quelli sopra sono solo esemplificativi
  • Re: Estrarre dati da gruppo

    Hai fatto come ti ho detto?
    https://www.iprogrammatori.it/forum-programmazione/mysql/estrarre-dati-gruppo-t33091.html#p8589140
Devi accedere o registrarti per scrivere nel forum
20 risposte