Tratta il timestamp di ogni post come l'inizio di tale ora e conta tutti gli altri post che rientrano in quell'ora, incluso il post che l'ha avviato.Ordina le ore risultanti in ordine decrescente in base al numero di post in ciascuna di esse.
Fatto ciò, troverai la singola "ora" più alta che contiene il maggior numero di post, ma questo periodo di tempo potrebbe non essere esattamente di un'ora, potrebbe essere più breve (ma non più lungo).
Per ottenere un periodo "più carino", è possibile calcolare quanto è lungo, dividere per due e regolare l'inizio del periodo indietro di tale importo e la fine in avanti, questo "centrerà" i post all'interno del ora. Questo aggiustamento è garantito per non includere nuovi post, quindi il conteggio è ancora valido. Se i post sono abbastanza vicini da essere inclusi improvvisamente nel periodo dopo averlo espanso a un'ora, un punto precedente avrebbe avuto "il maggior numero di post" al posto di quello selezionato.
Se si tratta di una domanda SQL, è possibile riutilizzare l'SQL che Josh ha pubblicato here, basta sostituire la tabella dei Minuti con un altro collegamento alla tabella dei post.
Un altro metodo è possibile utilizzare è quello di utilizzare una finestra scorrevole.
Prima ordinare tutti i messaggi in base al timestamp. Tieni traccia dei post utilizzando un elenco, un elenco collegato potrebbe essere utilizzato per questo.
Ora, per ogni post, aggiungerlo alla fine dell'elenco. Quindi, per ogni post dall'inizio della lista, se quel post è più di un'ora prima del post che hai appena aggiunto, rimuovilo dall'elenco.
Dopo aver eseguito l'operazione in due passaggi per un singolo nuovo post nell'elenco, controllare se il numero di post nell'elenco è superiore a un massimo precedente, e se lo è, effettuare una copia dell'elenco o in Memorizza almeno il post che hai appena aggiunto.
Dopo aver finito, hai la "copia della lista" con il maggior numero di messaggi in un'ora, o hai il post che è la fine di una finestra di 1 ora che contiene il maggior numero di post.
pseudo-codice:
initialize posts-window-list to empty list
for each post in sorted-posts-list:
add post to end of posts-window-list
for each other-post from start of posts-window-list:
if other-post is more than one hour older than post, remove it
otherwise, end this inner loop
if number of posts in list is more than previous maximum:
make copy of list, this is the new maximum
CHIARIMENTO: desidero considerare un periodo di 60 minuti. Quindi i metodi che usano la parte "ora" del timestamp non funzioneranno. – OverloadUT
Vedo ora, quale database stai usando? – JoshBerke