View Full Version : [MySql]Aggregazione in base a date
RaouL_BennetH
25-05-2008, 22:50
Buona sera a tutti :)
Ho diverse tabelle in cui è presente un campo di tipo data, per es.:
tabella1
dataLavoro = 2008-05-20
punti = 25
tabella1
dataLavoro = 2008-04-21
punti = 46
tabella1
dataLavoro = 2008-03-16
punti = 125
bene...
mi servirebbe di ricavare un tipo di visualizzazione tipo:
MESE PUNTI
marzo 125
aprile 46
maggio 25
Come posso fare?
Grazie mille :)
RaouL.
piccolo edit:
al momento io faccio così:
select monthname(dataLavoro), sum(punti) from tabella1 group by monthname(dataLavoro)
RaouL_BennetH
26-05-2008, 12:54
Ma porca trota :muro:
La faccenda è più complicata :cry:
le tabelle sono diverse:
tabella1, tabella2, tabella3, tabella4
in ogni tabella ci sono questi campi:
customer
dataLavoro
punteggio
in pratica io dovrei riassumere i dati così:
Mese -- customer -- punteggioTab1 -- punteggioTab2 -- punteggioTab3
Gen
Feb
Mar
:help:
RaouL_BennetH
27-05-2008, 15:50
up :mc:
ps.... (gugoX, cionci.... einstein... dove siete :cry: )
cdimauro
27-05-2008, 22:05
Ma fare la UNION di quelle 4 tabelle (selezionando solo i campi che interessano), e poi applicare la select del primo post?
RaouL_BennetH
28-05-2008, 01:00
Ma fare la UNION di quelle 4 tabelle (selezionando solo i campi che interessano), e poi applicare la select del primo post?
Buona sera Cesare :)
Non è che potresti farmi un esempio?
Ci sto da due giorni e ho perso lucidità :(
Grazie :)
RaouL.
cdimauro
28-05-2008, 09:04
Prova così:
SELECT monthname(dataLavoro), SUM(punti) FROM (SELECT dataLavoro, punti FROM tabella1 UNION SELECT dataLavoro, punti FROM tabella2 UNION SELECT dataLavoro, punti FROM tabella3 UNION SELECT dataLavoro, punti FROM tabella4) AS tabellone GROUP BY monthname(dataLavoro)
RaouL_BennetH
29-05-2008, 18:44
Grazie per l'esempio Cesare :)
Purtroppo non mi da il risultato desiderato nel senso che mi da una visualizzazione in colonne non divise per righe.
Ma cos'è che c'è di sbagliato proprio a livello logico secondo voi?
Grazie :)
RaouL.
Grazie per l'esempio Cesare :)
Purtroppo non mi da il risultato desiderato nel senso che mi da una visualizzazione in colonne non divise per righe.
Ma cos'è che c'è di sbagliato proprio a livello logico secondo voi?
Grazie :)
RaouL.
bhe si, avendo campi identici dovrebbe esistere una sola tabella!
cdimauro
29-05-2008, 21:17
Grazie per l'esempio Cesare :)
Purtroppo non mi da il risultato desiderato nel senso che mi da una visualizzazione in colonne non divise per righe.
Ma cos'è che c'è di sbagliato proprio a livello logico secondo voi?
Grazie :)
RaouL.
Scusami, non avevo visto la forma tabellare che volevi ottenere. Ecco qui:
SELECT t1.mese, Punteggio1, Punteggio2, Punteggio3, Punteggio4 FROM
(SELECT monthname(dataLavoro) AS mese, SUM(punti) AS Punteggio1 FROM tabella1 GROUP BY monthname(dataLavoro)) AS t1,
(SELECT monthname(dataLavoro) AS mese, SUM(punti) AS Punteggio1 FROM tabella2 GROUP BY monthname(dataLavoro)) AS t2,
(SELECT monthname(dataLavoro) AS mese, SUM(punti) AS Punteggio1 FROM tabella3 GROUP BY monthname(dataLavoro)) AS t3,
(SELECT monthname(dataLavoro) AS mese, SUM(punti) AS Punteggio1 FROM tabella4 GROUP BY monthname(dataLavoro)) AS t4
WHERE (t1.mese = t2.mese) AND (t1.mese = t3.mese) AND (t1.mese = t4.mese) ORDER BY mese
Ovviamente sto supponendo che in tutte e 4 le tabelle ci sia almeno un record per ogni mese (altrimenti si deve ricorrere a delle join).
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.