Questa è una versione SQL del report della dashboard per le visualizzazioni del profilo utente.
Questo report della dashboard genera statistiche sul numero totale di visualizzazioni del profilo utente al giorno all’interno di un intervallo di date specificato.
-- [params]
-- date :start_date = 2024-01-05
-- date :end_date = 2024-02-06
WITH profile_views_per_day AS (
SELECT
date_trunc('day', viewed_at) AS day,
COUNT(*) AS views
FROM user_profile_views
WHERE viewed_at >= :start_date AND viewed_at <= :end_date
GROUP BY day
)
SELECT
day::date,
views
FROM profile_views_per_day
ORDER BY day
Spiegazione della query SQL
Ecco una ripartizione di come funziona la query:
- Parametri: La query accetta due parametri,
:start_datee:end_date, che consentono all’utente di specificare l’intervallo di date per il report. Entrambi i parametri di data accettano il formato dataAAAA-MM-GG. - Common Table Expression (CTE): La query inizia con una CTE denominata
profile_views_per_day. Questo è un set di risultati temporaneo che utilizzeremo nella query principale. - Troncamento della data: all’interno della CTE, la funzione
date_truncviene utilizzata per troncare il timestampviewed_atal giorno. Ciò significa che indipendentemente dall’ora in cui è stato visualizzato un profilo, verrà conteggiato in base alla sola data. - Conteggio delle visualizzazioni: la funzione
COUNT(*)conta il numero di visualizzazioni del profilo per ogni giorno. - Filtraggio per intervallo di date: la clausola
WHERElimita il conteggio per includere solo le visualizzazioni avvenute tra i parametri:start_datee:end_date, che sono impostati all’inizio della query. - Raggruppamento dei risultati: la clausola
GROUP BYraggruppa i risultati per il giorno troncato in modo che il conteggio delle visualizzazioni venga aggregato per giorno. - Selezione dei risultati: l’istruzione
SELECTprincipale recupera i risultati dalla CTE. Seleziona il giorno troncato (convertito in tipo data) e il numero di visualizzazioni per quel giorno. - Ordinamento dei risultati: infine, la clausola
ORDER BYgarantisce che i risultati siano presentati in ordine cronologico per giorno.
Risultati di esempio
| day | views |
|---|---|
| 2024-01-05 | 263 |
| 2024-01-06 | 374 |
| 2024-01-07 | 272 |
| 2024-01-08 | 409 |
| 2024-01-09 | 606 |