Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755

    [mysql] una specie di pivot per "classifica"

    ciao
    ho una vista così descrivibile:
    codice:
    cliente      data       task      durata 
    cli1      2015-07-30     t1      00:18:00
    cli1      2015-07-30     t2      00:09:00
    cli1      2015-07-30     t3      00:04:00
    cli1      2015-07-29     t1      00:10:00
    cli1      2015-07-29     t2      00:20:00
    cli1      2015-07-30     t2      00:08:00
    cli2      2015-07-30     t1      00:18:00
    cli2      2015-07-30     t2      00:08:00
    cli2      2015-07-30     t3      00:30:00
    cli2      2015-07-29     t1      00:10:00
    cli2      2015-07-29     t2      00:15:00
    cli2      2015-07-29     t3      00:30:00

    vorrei ottenere un risultato tipo
    codice:
                 cli1   cli2
    2015-07-29    t2     t3
    2015-07-30    t1     t3

    ovvero la classifica giornaliera del più "lento" per ciascun cliente


    Il mio risultato finale è averla su un foglio excel, per cui ho provato a importare la tabella via ODBC e usare la creazione pivot, ma siccome il campo che voglio è testuale (il nome) allora non è possibile farlo.
    Credo allora che mi servirà una query.
    ho provato una cosa così
    codice:
    SELECT h.`data` , (
    SELECT c1.`task` 
    FROM  `tabella` c1
    WHERE c1.`cliente` =  'cli1'
    AND c1.`data` = h.`data` 
    GROUP BY c1.`cliente` , c1.`data` 
    ORDER BY MAX( c1.`durataSec` ) DESC 
    LIMIT 0 , 1
    ) AS  `cli1`, 
    (SELECT c2.`task` 
    FROM  `tabella` c2
    WHERE c2.`cliente` =  'cli2'
    AND c2.`data` = h.`data` 
    GROUP BY c2.`cliente` , c2.`data` 
    ORDER BY MAX( c2.`durataSec` ) DESC 
    LIMIT 0 , 1
    ) AS  `cli2`
    
    
    FROM  `tabella` h
    ma mi crea una riga per ogni task (sono molti di più di quelli che vi ho descritto), se provo a fare
    codice:
    SELECT distinct h.`data
    oppure
    codice:
    FROM  `tabella` h group by (h.`data`)

    mi si pianta tutto


    Sapete aiutarmi?


    grazie in anticipo
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  2. #2
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    francamente non ho capito benissimo qual'è il criterio per la query

  3. #3
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,755
    ciao grazie per la risposta

    non l'hai capito perchè è un tentativo abbastanza disperato
    è una query annidata sulla stessa vista: per ogni data, cerco il task che ha la durata massima per quel cliente e lo metto nella rispettiva colonna.
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  4. #4
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Allora ritengo sia una "matrice trasposta", cosa che (per quanto ne so), in mysql non si può fare con una singola query, bensì con una stored procedure

  5. #5
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    credo che la lettura di questo pdf ti possa aiutare....
    http://datacharmer.org/downloads/pivot_tables_mysql_5.pdf



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.