Buongiorno,

ho ottenuto il risultato voluto da una query.

Essa mi restituisce dei valori numerici.

Posto la query.

select if(time_to_sec(timediff(BM1.date, BM2.date)) > 20, (time_to_sec(timediff(BM1.date, BM2.date) - 20)), 0) from broadcast_message as BM1 inner join broadcast_message as BM2 on date(BM1.date) = date(BM2.date) AND date(BM1.date) = '2009-03-26' AND BM1.message = 1 AND BM2.message = 1 and time(BM1.date) > time(BM2.date) group by BM1.date;
Essa mi restituisce una tabella del genere

+---------------------------------------------------------------------------------------------------------+
| if(time_to_sec(timediff(BM1.date, BM2.date)) > 20, (time_to_sec(timediff(BM1.date, BM2.date) - 20)), 0) |
+---------------------------------------------------------------------------------------------------------+
| 24 |
| 16 |
| 0 |
| 0 |
| 16 |
+---------------------------------------------------------------------------------------------------------+
Allora ho pensato: se mi serve la somma totale di quei valori (cioè 24 + 24 + 0 + 0 + 16) basta aggiungere la funzione SUM all'inizio della query che contenga tutte le altre funzioni, in questo modo:

SUM( if(time_to_sec(timediff(BM1.date, BM2.date)) > 20, (time_to_sec(timediff(BM1.date, BM2.date) - 20)), 0) )
Ma invece di un unico valor restituito, ottengo questo:

+--------------------------------------------------------------------------------------------------------------+
| sum(if(time_to_sec(timediff(BM1.date, BM2.date)) > 20, (time_to_sec(timediff(BM1.date, BM2.date) - 20)), 0)) |
+--------------------------------------------------------------------------------------------------------------+
| 24 |
| 76 |
| 106 |
| 106 |
| 264 |
+--------------------------------------------------------------------------------------------------------------+
Risultato simile con COUNT(), che vorrei ritornasse 5.

Perchè tutto questo?