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

    [mysql] query molto complicata con il group by

    allora ragazzi mettiamo che ho questa tabella:

    codice:
    chiave - data - numero - count
    =========================
    ciao    - oggi  -  3        - 10
    ciao    - oggi  -  2        - 30
    ciao    - ieri    - 4         - 5
    ciao    - ieri    - 3         - 2
    io vorrei che una query mi prendesse i vari record raggruppati per 'chiave' e 'data' che abbiano il count maggiore degli altri per quel raggruppamento.

    Esempio dopo la mia query vorrei ottenere questo risultato:

    codice:
    chiave - data - numero - count
    =========================
    ciao    - oggi  -  2        - 30
    ciao    - ieri    - 4         - 5
    ho provato con questa query:

    "SELECT * FROM tab GROUP BY chiave,data ORDER BY count DESC"

    ma a volte mi tira fuori dei record che non hanno il count massimo

    pareri?

  2. #2
    per tamponare il problema ho provato a fare cosi:

    "SELECT *,MAX(count) as _cm FROM tab GROUP BY chiave,data HAVING count = _cm"

    ora i dati che vengono fuori sono coerenti perchè c'è il controllo dopo la selezione con HAVING... il problema è che mi scarta alcuni dati quando ha selezionato un count che non è il massimo per quel raggruppamento...

    come potrei fare?

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select tab2.* from (
    select data,max(`count`) as maggiore from tab group by chiave,data) as tab1
    left join tab as tab2 on tab1.maggiore = tab2.`count` and tab1.data = tab2.data

  4. #4

  5. #5
    io avevo pensato ad una soluzione del genere:

    SELECT * FROM (SELECT * FROM tab ORDER BY count DESC) as tab GROUP BY chiave,data

    in questo modo fa il raggruppamento considerando però già record ordinati per il count discendente

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    In questo thread trovi svariate soluzioni allo stesso problema

    http://forum.html.it/forum/showthrea...ghlight=studia


  7. #7
    hm interessante.

    comuqnue con la query innestata che ho postato funziona.. (la sto provnado in quesot momento)

    Evidentemnete il group by seleziona il primo record per quel raggruppamento che trova..
    avendo ordinato i dati precedentemnte per count DESC il record del group by avrà anche il count maggiore (come richiestp)

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.