Somma delle colonne di una tabella pivot

Andreawave

Nuovo Utente
27 Gen 2014
11
0
1
Buongiorno,
ho il seguente problema: ho la seguente tabella pivot alla quale devo aggiungere una riga finale con i totali dati dalla somma di ogni colonna.
tabella.jpg

Tale tabella è stata ottenuta tramite il seguente codice:
SQL:
select detailDestinationName as 'Nome Coda',
count(*) as 'Totale Chiamate ricevute',
count(case when status = 'SERVED' then uniqueId else null end) as 'Chiamate Servite',
(count(case when status = 'SERVED' then uniqueId else null end)/count(*)*100) as '% chiamate servite',
ifnull((count(case when status = 'NOTSERVED' and waitingTime >= 30 then uniqueId else null end)/(count(*)-count(case when status = 'NOTSERVED' and waitingTime < 30 then uniqueId else null end))*100),0) as "Totale Abbandoni",
count(case when status = 'NOTSERVED' and waitingTime >= 30 then uniqueId else null end) as 'Chiamate non Servite Superiori a 30 secondi',
ifnull((count(case when status = 'NOTSERVED' and waitingTime >= 30 then uniqueId else null end)/count(case when status = 'NOTSERVED' then uniqueId else null end )*100),0) as '% chiamate non servite superiore a 30 secondi',
count(case when status = 'NOTSERVED' and waitingTime < 30 then uniqueId else null end) as 'Chiamate non Servite Inferiori a 30 secondi',
ifnull((count(case when status = 'NOTSERVED' and waitingTime < 30 then uniqueId else null end)/count(case when status = 'NOTSERVED' then uniqueId else null end )*100),0) as '% chiamate non servite inferiore a 30 secondi'
from chiamate_report_new
group by detailDestinationId;

Non ho la minima idea di come si possa fare.
Potreste aiutarmi?
Grazie
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
puoi aggiungere la riga del totale con una union tipo
SQL:
group by detailDestinationId
union
  select 'TOTALE' as 'Nome Coda',
  sum(count(*)) as 'Totale Chiamate ricevute',
...
  from chiamate_report_new;
bada che "union" sia preceduto e seguito da uno spazio
mantieni esattamente uguali i nomi delle colonne come nella query che precede (as ….)
 

Andreawave

Nuovo Utente
27 Gen 2014
11
0
1
puoi aggiungere la riga del totale con una union tipo
SQL:
group by detailDestinationId
union
  select 'TOTALE' as 'Nome Coda',
  sum(count(*)) as 'Totale Chiamate ricevute',
...
  from chiamate_report_new;
bada che "union" sia preceduto e seguito da uno spazio
mantieni esattamente uguali i nomi delle colonne come nella query che precede (as ….)

In pratica nella seconda tabella devo aggiungere solamente delle sum con all'interno i count della tabella precedente, corretto?
Es
SQL:
sum(count(case when status = 'SERVED' then uniqueId else null end) as 'Chiamate Servite',)
Giusto?
 

Andreawave

Nuovo Utente
27 Gen 2014
11
0
1
Ho modificato la query nel seguente modo:

SQL:
select detailDestinationName as 'Nome Coda',
count(*) as 'Totale Chiamate ricevute',
count(case when status = 'SERVED' then uniqueId else null end) as 'Chiamate Servite',
(count(case when status = 'SERVED' then uniqueId else null end)/count(*)*100) as '% chiamate servite',
ifnull((count(case when status = 'NOTSERVED' and waitingTime >= 30 then uniqueId else null end)/(count(*)-count(case when status = 'NOTSERVED' and waitingTime < 30 then uniqueId else null end))*100),0) as "Totale Abbandoni",
count(case when status = 'NOTSERVED' and waitingTime >= 30 then uniqueId else null end) as 'Chiamate non Servite Superiori a 30 secondi',
ifnull((count(case when status = 'NOTSERVED' and waitingTime >= 30 then uniqueId else null end)/count(case when status = 'NOTSERVED' then uniqueId else null end )*100),0) as '% chiamate non servite superiore a 30 secondi',
count(case when status = 'NOTSERVED' and waitingTime < 30 then uniqueId else null end) as 'Chiamate non Servite Inferiori a 30 secondi',
ifnull((count(case when status = 'NOTSERVED' and waitingTime < 30 then uniqueId else null end)/count(case when status = 'NOTSERVED' then uniqueId else null end )*100),0) as '% chiamate non servite inferiore a 30 secondi'
from chiamate_report_new
group by detailDestinationId
UNION
 select 'TOTALE' as 'Nome Coda',
  sum(count(*)) as 'Totale Chiamate ricevute',
  sum(count(case when status = 'SERVED' then uniqueId else null end)) as 'Chiamate Servite',
  sum((count(case when status = 'SERVED' then uniqueId else null end)/count(*)*100)) as '% chiamate servite',
  sum(ifnull((count(case when status = 'NOTSERVED' and waitingTime >= 30 then uniqueId else null end)/(count(*)-count(case when status = 'NOTSERVED' and waitingTime < 30 then uniqueId else null end))*100),0)) as "Totale Abbandoni",
  sum(count(case when status = 'NOTSERVED' and waitingTime >= 30 then uniqueId else null end)) as 'Chiamate non Servite Superiori a 30 secondi',
  sum(ifnull((count(case when status = 'NOTSERVED' and waitingTime >= 30 then uniqueId else null end)/count(case when status = 'NOTSERVED' then uniqueId else null end )*100),0)) as '% chiamate non servite superiore a 30 secondi',
  sum(count(case when status = 'NOTSERVED' and waitingTime < 30 then uniqueId else null end)) as 'Chiamate non Servite Inferiori a 30 secondi',
  sum(ifnull((count(case when status = 'NOTSERVED' and waitingTime < 30 then uniqueId else null end)/count(case when status = 'NOTSERVED' then uniqueId else null end )*100),0)) as '% chiamate non servite inferiore a 30 secondi'
  from chiamate_report_new;

ma ottengo il seguente errore:
Error Code: 1111. Invalid use of group function
Cosa ho sbagliato?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
esegui la prima select da sola ( senza union e successiva )
deve andare bene perché é quella che produce il risultato che hai visualizzato

esegui la seconda select da sola (senza la prima e senza union )
deve fornire la riga di totale, se dovesse dare errore, correggi i possibili,

quando entrambe le select danno il risultato atteso, uniscile con union, avendo accortezza agli spazi come detto

il mio sistema, non evidenzia errori di sintassi nelle 2 select unite ( con i dovuti spazi )
 

Andreawave

Nuovo Utente
27 Gen 2014
11
0
1
Ho risolto, grazie infinite!
In pratica ciò che generava l'errore era l'aver inserito la funzione "count" all'interno della funzione "sum".

Ho risolto semplicemente sostituendo l'espressione:
SQL:
sum(count(*)) as 'Totale Chiamate ricevute'
..........................
con l'espressione:
SQL:
count(*) as 'Totale Chiamate ricevute',
....etc......
 
Discussioni simili
Autore Titolo Forum Risposte Data
G scomponi un numero intero come la somma di 20 numeri interi casuali maggiori di zero diversi fra loro Javascript 1
F Somma di più tabelle da script Javascript 0
E Help Sql somma orari PHP 32
M Somma inversa di Array C/C++ 2
A Moltiplicazione tramite somma PHP 5
A Somma di orari con centesimi PHP 1
V Somma foreach PHP 2
V Somma Risposte PHP 5
V Query per una somma PHP 2
G Somma dei Minuti PHP 3
L somma e informa PHP 16
L query somma PHP 8
L salvare somma con sottrazione PHP 1
W fare la somma di un valore estratto da un ciclo while Classic ASP 0
MarcoGrazia [PHP] Unioni di due array con somma di valori PHP 6
R php Somma valori in file csv PHP 2
Emix [Javascript] Somma con array input HTML Javascript 1
A [MS Access] Somma Campi se in altro campo presente un determinato testo MS Access 1
A [Javascript] Somma di un campo in una tabella dinamica Javascript 0
T Problema somma mysql MySQL 8
A [Javascript] Somma di input dinamici Javascript 1
B Somma armonica jQuery 3
elpirata [PHP][RISOLTO] Effettuare la somma dei tempi di lavorazione PHP 3
P [PHP] somma totale imponibile e totale fattura PHP 3
Z Somma di numeri in una lista di app inventor Sviluppo app per Android 0
V Somma anni ad una data con datepicker jQuery 1
A [PHP] Somma in unico risultato di più tabelle PHP 6
T [PHP] matrice con somma diagonali PHP 2
Trapano [PHP] somma di una lista di pagamenti PHP 2
Bunz [Javascript] somma orario input + calcolo straordinario Javascript 3
P Query con Somma di un Campo , aggregazione e join Database 3
G Somma variabili impossibile Javascript 3
A Aiuto somma di campi MS Access 0
A Somma di sottoreport su report Database 2
A Controllo somma di valori in una select Ajax 1
R Sistema di conteggio (somma) HTML e CSS 4
G Somma dati se codice uguale Classic ASP 4
G Somma di report e sottoreport MS Access 0
Emix Somma automatica checkbox Javascript 1
Akuma Somma dei campi in una tabella PHP 1
felino Microsoft Excel: somma su un'intera colonna Windows e Software 1
felino [JS] Passare un array ed effettuare la somma degli elementi Javascript 2
N Somma di variabili PHP 3
V perchè una somma può non funzionare? PHP 4
M Somma di due record MySQL 7
blips Controllo somma di valori in una select Javascript 5
C [RISOLTO] Problema somma td, prende solo il primo valore jQuery 7
Emix Somma su punti con controllo vip PHP 5
L Somma solo se non riappare elemento PHP 4
L somma elementi, finché elementi di altro array sono uguali PHP 2

Discussioni simili